我对maven及其tomcat7插件有疑问:)
我有以下Maven项目:
plugin1:打包为jar的纯Java项目
plugin2:打包为jar的纯Java项目
webapp:打包为jar的独立webapp项目
这三个项目均已在maven中正确构建,并且效果很好:
我可以使用plugin1 / plugin2中的jar
我可以将webapp war文件部署到Web容器
我可以运行tomcat7:run来启动webapp
现在,我需要提供包含特定插件设置的webapp的不同包装。
即我想使用webapp + plugin1生成一个战争文件,并使用webapp + pugin2生成另一个文件
为此,我创建了2个附加的Maven项目,这些项目声明了webapp项目和相应插件项目的依赖关系,并打包为wars。
生成的war文件具有预期的内容,并且可以部署到tomcat,但是当我尝试使用maven tomcat插件(tomcat7:再次运行)时,它根本不会启动任何内容。
尽管这并不妨碍我(我的主要目的是生成战争文件),但我还是觉得自己错过了一些东西。
这些聚合项目的pom.xml看起来像这样(请注意,那些项目中绝对没有代码,这些代码只是为打包而创建的,具有特定的依赖关系)。
<groupId>my.project</groupId>
<artifactId>live1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>MyWebapp</name>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
<dependencies>
<dependency>
<groupId>my.project</groupId>
<artifactId>plugin1</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>my.project</groupId>
<artifactId>webapp</artifactId>
<version>${project.version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<finalName>MyWebapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<url>http://localhost:8080/manager</url>
<server>localhost</server>
<path>/${project.build.finalName}</path>
</configuration>
</plugin>
</plugins>
</build>
谢谢 !
注意:长期潜伏者,第一次进入这里,如果缺少某些信息,请告诉我:)
最佳答案
根据项目的结构,仅添加类型war的依赖项可能并不足够。您可能还需要按maven-war-plugin所述配置<overlays>
。
您的最终战争似乎无法提供您期望的完整Web配置。使用overlays
,您可以配置如何将依赖项中的资源打包到最终的Web应用程序中。
与tomcat7插件相比,外部tomcat启动应用程序的方式必须有所不同。也许您可以尝试-X选项:
mvn -X tomcat7:run
这应该注销一些有关嵌入式tomcat正在配置的细节。
关于java - Maven Tomcat7进行依赖 war ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36204231/