如何使用maven将web应用程序和tomcat打包在一起?
我希望将我的应用程序打包为嵌入在ApacheTomcat中的WAR。也就是说,我希望将Tomcat与我的应用程序一起分发 如何使用Maven完成这种分发包装如何使用maven将web应用程序和tomcat打包在一起?,tomcat,maven,maven-cargo,Tomcat,Maven,Maven Cargo,我希望将我的应用程序打包为嵌入在ApacheTomcat中的WAR。也就是说,我希望将Tomcat与我的应用程序一起分发 如何使用Maven完成这种分发包装 我已经看到了,但它似乎是面向在本地容器中部署应用程序的。也许我需要的是在Cargo插件上多做一步货物:包裹看起来很有趣,但缺少文档。详细阐述Tomasz的评论,您可以执行以下操作来实现这一点 下载tomcat并将其安装到本地存储库中 mvn安装:安装文件-DgroupId=org.apache-DartifactId=tomcat-Dver
我已经看到了,但它似乎是面向在本地容器中部署应用程序的。也许我需要的是在Cargo插件上多做一步<代码>货物:包裹看起来很有趣,但缺少文档。详细阐述Tomasz的评论,您可以执行以下操作来实现这一点
maven依赖插件的unpack
目标将tomcat解压到工作文件夹中
maven assembly plugin
将应用程序war放置在webapps文件夹中并创建一个zip文件您可以参考pom.xml和程序集描述符。更好的方法可能是中指定的内容(尽管它也适用于非heroku应用程序) 总结(以防链接失效) Tomcat嵌入包可以为您提供一个
Tomcat
API,您可以在一个主类中引用它
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
你看过maven汇编插件吗?不,现在检查。感谢链接请记住,将您的应用程序与Tomcat一起打包可能意味着您的用户将不会使用最新版本的Tomcat。Tomcat还需要安装Java(JRE)。如果你包括Tomcat,还可以包括一个JRE。@Tomasz:你知道你提到的文章中“独立模块”是什么意思吗?它的意思是“与其他模块分离”,就在它们的某个地方。看起来,本文的作者正在将单独的Tomcat JAR聚合为构建Tomcat发行版的单个项目的依赖项。您可以让它简单一点,只需手动压缩Tomcat并将其安装到您的本地存储库中,稍后在汇编插件中将其作为ZIP引用。谢谢Raghuram。虽然我还没有尝试过,但看看你提供的链接,maven dependency plugin似乎是一种更好的方法,如果项目在github上,它是一种更好的方法吗?(而不是要求贡献者下载并安装tomcat)
package launch;
import java.io.File;
import org.apache.catalina.startup.Tomcat;
public class Main {
public static void main(String[] args) throws Exception {
String webappDirLocation = "src/main/webapp/";
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
System.out.println("configuring app with basedir: " +
new File("./" + webappDirLocation).getAbsolutePath());
tomcat.start();
tomcat.getServer().await();
}
}