Tôi gặp sự cố tệp trùng lặp với tập lệnh tạo Gradle của mình.Tệp trùng lặp trong tệp được xây dựng theo Gradle
cấu trúc thư mục My là tiêu chuẩn maven, cộng với một số thư mục thêm cho xây dựng cấu hình khác nhau:
/src/main/java
/src/main/resources
/src/main/dev/resources
/src/main/prod/resources
Các tập tin từ /src/main/resources
và /src/main/dev/resources
dường như được xử lý bởi cả processResources
và war
nhiệm vụ, và kết thúc trong tệp .war hai lần. Làm cách nào để ngăn điều đó xảy ra mà không loại trừ từng tệp đơn theo cách thủ công trong cấu hình chiến tranh?
Toàn bộ build.gradle của tôi được bao gồm bên dưới; chú thích buildEnvironment
được đặt thành dev
theo mặc định, nhưng cũng có thể là prod
.
apply plugin: "sonar"
apply plugin: "war"
apply plugin: "eclipse-wtp"
// ************************************************************************************************
// GENERAL CONFIGURATION
// ************************************************************************************************
sourceCompatibility = 1.6
group = "com.foo"
archivesBaseName = "security"
version = "0.1-SNAPSHOT"
// versions of various components where we need more than one and may want to update often
def springVersion = "3.1.1.RELEASE"
def tomcatVersion = "7.0.25"
def jasperVersion = "4.5.0"
// buildEnvironment is set in gradle.properties and can be overridden with -PbuildEnvironment=... on the command line
println "running in $buildEnvironment mode..."
// set classes output directory to WEB-INF/classes
eclipse.classpath.defaultOutputDir = new File(project.getWebAppDir().getAbsolutePath(), "/WEB-INF/classes")
// ************************************************************************************************
// SOURCE SETS
// ************************************************************************************************
sourceSets {
// add the resources specific to the build environment
main.resources.srcDirs += "src/main/$buildEnvironment/resources"
// add source set for jasper reports
jasperreports {
srcDir = file(relativePath('src/main/jasperreports'))
output.classesDir = file(relativePath('src/main/java/com/foo/bar/security/statistics'))
}
}
// ************************************************************************************************
// PLUGINS
// ************************************************************************************************
buildscript {
repositories {
add(new org.apache.ivy.plugins.resolver.URLResolver()) {
name = 'GitHub'
addArtifactPattern 'http://cloud.github.com/downloads/[organisation]/[module]/[module]-[revision].[ext]'
}
}
dependencies { classpath 'bmuschko:gradle-tomcat-plugin:0.9' }
}
apply plugin: "tomcat"
// ************************************************************************************************
// PLUGIN CONFIGURATION
// ************************************************************************************************
// configure eclipse .project/.classpath generator
eclipse {
project { natures 'com.springsource.sts.gradle.core.nature' }
wtp { component { contextPath = "/security" } }
}
configurations {
// make sure we don't get dependencies we don't want
all*.exclude group: "net.sf.ehcache", module: "ehcache-terracotta"
all*.exclude group: "bouncycastle", module: "bcmail-jdk14"
all*.exclude group: "bouncycastle", module: "bcprov-jdk14"
all*.exclude group: "bouncycastle", module: "bctsp-jdk14"
// wtp needs a special invitation for some reason
eclipseWtpComponent {
exclude group: "net.sf.ehcache", module: "ehcache-terracotta"
}
jasperreports { transitive = true }
}
// maven repositories
repositories {
maven { url "http://maven.springframework.org/milestone/" }
mavenCentral()
}
// sonar configuration
sonar {
server { url = "http://xxx" }
database {
url = "jdbc:mysql://xxx"
driverClassName = "com.mysql.jdbc.Driver"
username = "xxx"
password = "xxx"
}
project { key = "foo.bar:security" }
}
war {
// set war output file name
archiveName = "security.war"
// make sure no duplicate processing of files takes place
excludes += [
"**/database.properties",
"**/logback.xml",
"**/rebel.xml",
"**/upload.properties",
"**/ValidationMessages.properties"
]
}
tomcatRun { contextPath = "/security" }
// ************************************************************************************************
// DEPENDENCIES
// ************************************************************************************************
dependencies {
// exclusions for jasperreports, which tries to load old versions of stuff
compile("net.sf.jasperreports:jasperreports:$jasperVersion") {
exclude module: "jfreechart"
exclude module: "jcommon"
}
// exclusions for ehcache, we don't want their enterprise cache
compile("net.sf.ehcache:ehcache:2.5.1") {
exclude group: "net.sf.ehcache", module: "ehcache-terracotta"
}
// compile and runtime dependencies
compile "org.springframework:spring-webmvc:$springVersion",
"org.springframework:spring-orm:$springVersion",
"org.springframework:spring-aspects:$springVersion",
"org.springframework.mobile:spring-mobile-device:1.0.0.RC1",
"org.jfree:jfreechart:1.0.14",
"org.apache.tiles:tiles-jsp:2.2.2",
"c3p0:c3p0-oracle-thin-extras:0.9.1.2",
"org.mybatis:mybatis-spring:1.0.2",
"org.aspectj:aspectjrt:1.6.12",
"org.aspectj:aspectjweaver:1.6.12",
"org.codehaus.jackson:jackson-mapper-asl:1.9.4",
"ch.qos.logback:logback-classic:1.0.0",
"org.slf4j:jcl-over-slf4j:1.6.4",
"org.slf4j:log4j-over-slf4j:1.6.4",
"org.slf4j:jul-to-slf4j:1.6.4",
"org.hibernate:hibernate-validator:4.2.0.Final",
"com.google.guava:guava:11.0.1",
"commons-dbutils:commons-dbutils:1.4",
"commons-fileupload:commons-fileupload:1.2.2",
"commons-io:commons-io:2.1",
"commons-lang:commons-lang:2.6",
"org.bouncycastle:bcprov-jdk16:1.46",
"org.quartz-scheduler:quartz:2.1.3",
"jdom:jdom:1.1",
"cglib:cglib:2.2.2",
"org.jasypt:jasypt:1.9.0",
"com.sun.mail:smtp:1.4.4",
"com.sun.mail:mailapi:1.4.4",
"xalan:xalan:2.7.1",
"org.jdom:saxpath:1.0-FCS"
runtime "javax.servlet:jstl:1.2"
// for compiling jasper reports
jasperreports "net.sf.jasperreports:jasperreports:$jasperVersion",
"org.codehaus.groovy:groovy-all:1.8.6"
}
// dependencies for each tomcat version, which are in different packages for 6.x and 7.x, sigh
println "adding dependencies for Tomcat $tomcatVersion"
if (tomcatVersion.startsWith("6")) {
dependencies.add("providedCompile", "org.apache.tomcat:catalina:$tomcatVersion")
dependencies.add("tomcat", "org.apache.tomcat:catalina:$tomcatVersion")
dependencies.add("tomcat", "org.apache.tomcat:coyote:$tomcatVersion")
dependencies.add("tomcat", "org.apache.tomcat:jasper:$tomcatVersion")
} else if (tomcatVersion.startsWith("7")) {
dependencies.add("providedCompile", "org.apache.tomcat:tomcat-catalina:$tomcatVersion")
dependencies.add("tomcat", "org.apache.tomcat:tomcat-catalina:$tomcatVersion")
dependencies.add("tomcat", "org.apache.tomcat:tomcat-coyote:$tomcatVersion")
dependencies.add("tomcat", "org.apache.tomcat:tomcat-jasper:$tomcatVersion")
}
// ************************************************************************************************
// JASPER REPORTS
// ************************************************************************************************
task jasperReports(overwrite: true) << {
ant {
taskdef(name: 'jrc',
classname: 'net.sf.jasperreports.ant.JRAntCompileTask',
classpath: configurations.jasperreports.asPath)
mkdir(dir:sourceSets.jasperreports.output.classesDir)
jrc(srcdir: sourceSets.jasperreports.srcDir, destdir: sourceSets.jasperreports.output.classesDir) {
include(name:'**/*.jrxml')
classpath {
pathElement(path: configurations.jasperreports.asPath)
}
}
}
}
task cleanJasperReports(overwrite: true) << {
ant.delete() {
fileset(dir:sourceSets.jasperreports.output.classesDir, includes: "*.jasper")
}
}
compileJava.dependsOn jasperReports
Đó là những gì tôi đã làm và nó hoạt động tốt. Xin lỗi, tôi chỉ thấy điều này ngay bây giờ, e-mail phải được chôn trong thư mục spam ... – gschmidl