war - gradle:将 jar 添加到 web-inf

标签 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.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)只添加必要的 jar 。在 war 中,在上面的代码中,我在 war 中获得了 Jetty 和 servlet jar。 !

最佳答案

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

关于您的构建脚本的一些说明:

  • 您不必将依赖项放在“编译”类路径上已经存在的“运行时”类路径上。 Gradle 为你做这件事。 “providedCompile”和“providedRuntime”也是如此。
  • 你真的对 servlet API 和 Jetty 有编译依赖吗? (可能是真的,只是想知道。)
  • 您对“mavenRepo urls: ...”的使用是错误的。你需要一一列出repos。有关更多信息,请参阅 Gradle 用户指南中的 32.5.1 Maven repositories
  • 不知道为什么到处都使用“@jar”。这有效地禁用了传递依赖管理。也许是 3 的结果。 ?
  • 您的“war { ... }”配置是默认配置,可以省略。请参阅用户指南中的 23.6 War
  • 关于war - gradle:将 jar 添加到 web-inf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4966161/

    相关文章:

    configuration - 如何在单个EAR中为不同的 war 配置多个log4j?

    spring - 在spring boot中gradle build(war)时,可以将静态文件放在根目录中吗?

    intellij-idea - Intellij 包前缀由项目的 gradle refresh 重置

    jsp - Maven 编译/安装更改 JSP 内容

    java - 在运行时更改 jar/war 文件中的 config.properties 文件并热部署更改?

    android-studio - 使用NanoHTTPD构建Gradle,但无法导入类

    gradle - 为什么此字符串替换/连接在 Gradle 中不起作用?

    java - Gradle 包装器 : command not found?

    java - 使用参数部署 *.war 文件

    java - 部署 war spring 失败 - 无法启动组件