War gradle:将jar添加到web inf

War gradle:将jar添加到web inf,war,gradle,War,Gradle,我已经创建了一个gradle构建,并添加了java、scala、war、jetty代码,所有这些都可以正常工作 apply plugin: 'java' apply plugin: 'scala' apply plugin: 'war' apply plugin: 'jetty' List compileTime = [ "javax.servlet:servlet-api:2.4@jar", "org.sca

我已经创建了一个gradle构建,并添加了java、scala、war、jetty代码,所有这些都可以正常工作



apply plugin: 'java'
apply plugin: 'scala'
apply plugin: 'war'
apply plugin: 'jetty'

List compileTime = [
                    "javax.servlet:servlet-api:2.4@jar",
                    "org.scalatra:scalatra_2.8.0:2.0.0.M2@jar",
                    "org.mortbay.jetty:jetty:6.1.22@jar",
                    "com.mongodb.casbah:casbah_2.8.0:2.0.2@jar",
                    "org.scala-lang:scala-library:2.8.1@jar"
            ]

List runTime = [
                    "org.scalatra:scalatra_2.8.0:2.0.0.M2@jar",
                    "com.mongodb.casbah:casbah_2.8.0:2.0.2@jar",
                    "org.scala-lang:scala-library:2.8.1@jar"
            ]

//                  "org.mortbay.jetty:servlet-api:2.5-20081211@jar",
 repositories {
    mavenCentral()
    mavenRepo urls: ["http://scala-tools.org/repo-releases","http://mirrors.ibiblio.org/pub/mirrors/maven2","http://repo1.maven.org/maven2","https://oss.sonatype.org/content/repositories/snapshots","https://oss.sonatype.org/content/repositories/releases"]
}

dependencies {
        scalaTools 'org.scala-lang:scala-compiler:2.8.1'
        scalaTools 'org.scala-lang:scala-library:2.8.1'
          compile compileTime
            runtime runTime
          testCompile "junit:junit:3.8.2"   
      } 

task myTask (type: War) {
  println configurations.runtime.collect
  println classpath()
 }

war {
   // from 'main/webapp' 
    webInf { from 'src/main/webapp/WEB-INF' }
  //  classpath classpath() /
    classpath configurations.runtime

    webXml = file('src/main/webapp/WEB-INF/web.xml') 
}

我喜欢
1) 只添加必要的罐子。在战争中,在上面的代码中,我在战争中得到了Jetty和servlet JAR

对于不应进入战争的依赖项,请使用“providedCompile”或“providedRuntime”范围

关于构建脚本的一些备注:

  • 您不必将依赖项放在已经在“编译”类路径上的“运行时”类路径上。格雷德尔为你做这件事。“providedCompile”和“providedRuntime”也一样
  • 您真的对servlet API和Jetty有编译依赖关系吗?(可能是真的,只是想知道。)
  • 您使用的“mavenRepo URL:…”是错误的。你需要逐一列出回购协议。有关更多信息,请参阅《Gradle用户指南》中的
  • 不知道你为什么到处使用“@jar”。这将有效地禁用可传递依赖关系管理。也许是3的结果
  • 您的“war{…}”配置是默认配置,可以省略。请参见《用户手册》中的