【问题标题】:Create a WAR from the java files using Gradle script使用 Gradle 脚本从 java 文件创建 WAR
【发布时间】:2017-07-26 13:23:01
【问题描述】:

我的目录结构是,
C:\Grapher\src\ *.java
C:\Grapher\lib\ *.jar

有很多java文件和很多jar依赖。我想创建一个 tomcat 可部署的 WAR。
有人可以建议我如何使用 gradle 脚本创建 WAR 吗?在 Gradle 中创建 WAR 需要包含哪些依赖项。

【问题讨论】:

  • 您自己尝试过吗?你在哪里尝试失败了?
  • 我尝试使用包含 java 和 war 插件的 build.gradle 文件,它创建了一个只有 1kb 的 war 文件。
  • 您应该将这些信息添加到问题中。尤其是展示您的 build.gradle 将有助于回答您的问题。

标签: java class gradle ant war


【解决方案1】:

您是否阅读并理解了https://docs.gradle.org/current/userguide/war_plugin.html

War 插件添加了两个依赖配置,分别命名为providedCompile 和providedRuntime。这两个配置与各自的编译和运行时配置具有相同的范围,只是它们没有添加到 WAR 存档中。需要注意的是,这些提供的配置是可传递的。假设您将 commons-httpclient:commons-httpclient:3.0 添加到任何提供的配置中。这种依赖关系依赖于 commons-codec。因为这是一个“提供的”配置,这意味着这些依赖项都不会添加到您的 WAR 中,即使 commons-codec 库是您的编译配置的显式依赖项。如果您不想要这种传递行为,只需声明您提供的依赖项,例如 commons-httpclient:commons-httpclient:3.0@jar。

如果您使用providedCompile 或providedRuntime,这些依赖项将不会添加到您的战争档案中。

你的项目中需要的文件夹结构是:

app
 |-src
    |-main
       |-java
       |-webapp

在 java 文件夹中添加您自己的包和类。如果您的应用程序使用此类项目,您可以在 webapp 文件夹中添加 Web 内容。

【讨论】:

  • 我已经尝试了不同建议的所有可能方法,但无法解决。我是 Gradle 和 java 概念的新手,我想知道应该包含哪些依赖项/额外文件来构建一个 war 文件我只有 .java 文件。
  • 我已经编译了我拥有的所有依赖 jar 的 java 文件,并且能够创建类文件。我想知道制造战争需要采取哪些进一步的步骤。
  • 由于您使用的是 Gradle,因此请使用“war”插件并运行 ./gradlew build。然后 Gradle 将构建你的战争,位于 build/libs/your_application.war。如果我们能看到你的 gradle.build 会更容易提供帮助
  • 如果您不了解 war 的打包方式以及它们应包含的内容,请阅读 The Java EE Tutorial。 Romin Irani 写了一份关于如何使用 gradle 编写 java web applications 的有用指南,所有代码都可以在 GitHub (github.com/rominirani/GradleWebAppSample) 上找到
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 2016-01-11
  • 2022-01-02
  • 2016-02-10
  • 2014-03-16
  • 2014-11-03
相关资源
最近更新 更多