使用gradle构建maven war覆盖项目

时间:2015-02-10 08:29:06

标签: maven gradle war embedded-tomcat-7

我想将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用作root项目并从maven执行gradle任务
  5. 还有其他想法或建议吗?

3 个答案:

答案 0 :(得分:1)

你可以:

  1. 使用tomcat embedded
  2. 创建Java应用程序
  3. 使用gradle shadow plugin为Java应用程序创建可执行的überjar

答案 1 :(得分: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目标将被执行,这非常有效。

答案 2 :(得分:0)

我不确定这是多么可靠,但你也可以实例化并执行一些maven mojos,而不需要maven容器/线束(详情here

我不确定这是否可以使用maven tomcat mojo。