2

我想将一个 Maven 项目集成到我的 gradle 构建过程中。尽管我成功地将 maven 项目(这是一个战争覆盖项目)转换为 gradle 项目,但这样做有几个缺点。首先,maven tomcat 插件可以轻松创建一个带有嵌入式 tomcat 实例的可运行 jar。我找不到可以完成这项工作的 gradle 插件。为了解决这个问题,我看到了四种不同的方法,我想知道哪一种是最好的,或者是否还有另一种可能性。

  1. 将 maven 项目转换为 gradle。如前所述,这可行,但我找不到使用这种方法创建带有嵌入式 tomcat 的 jar 的方法。
  2. maven 项目将有一个额外的 build.gradle,其中包含执行 maven 目标的任务(例如 ant.exec)
  3. 我在所有项目中都使用 maven(对我来说不是一个真正的选择)
  4. 使用 maven 作为根项目并从 maven 执行 gradle 任务

还有其他想法或建议吗?

4

3 回答 3

1

经过一段时间的调查,我想自己回答这个问题。我认为在这种特殊情况下将 maven 项目转换为 gradle 项目并不是最好的方法。我决定使用第二种方法:

war-overlay 项目仍然是一个 maven 项目,但我还在项目中添加了一个 gradle.build 文件。构建脚本如下所示:

task mvnPackage(type:Exec) {
    commandLine "${mavenHome}/mvn", 'package'
}

task mvnClean(type: Exec) {
    commandLine "${mavenHome}/mvn", 'clean'
}

clean.dependsOn mvnClean

assemble.dependsOn mvnPackage

因此,如果我使用 gradle 作为构建工具,maven 目标将被执行,效果很好。

于 2015-02-10T14:06:11.897 回答
1

你可以:

  1. 使用嵌入的tomcat创建一个java应用程序
  2. 使用gradle shadow 插件为 java 应用程序创建一个可执行的 über jar
于 2015-02-10T11:33:10.587 回答
0

我不确定这有多可靠,但您也可以在不需要 maven 容器/线束的情况下实例化和执行一些 maven mojos(详见此处

我不确定maven tomcat mojo是否可以做到这一点。

于 2015-02-10T16:46:55.933 回答