我有一个关于maven及其tomcat7插件的问题:)
我有以下专业项目:
- plugin1:打包为jar的普通java项目
- plugin2:打包为jar的普通java项目
- webapp:打包为jar的独立webapp项目
这三个项目都是在maven中正确构建的,结果很好:
- 我可以用plugin1/plugin2的罐子
- 我可以将webapp war文件部署到web容器
- 我可以运行tomcat7:run来启动网络应用程序
现在,我需要提供包含特定插件设置的网络应用程序的不同包装。即,我想用webapp+plugin1生成一个war文件,用webapp+Plugin2生成另一个
为了实现这一点,我创建了两个额外的maven项目,它们声明了对webapp项目的依赖性+适当的插件项目,并打包为war。生成的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的依赖项可能不够。您可能还需要按照此处所述配置<overlays>
maven war插件。看起来你的最后一战并没有提供你所期望的完整的网络配置。使用overlays
,您可以配置如何将依赖项中的资源打包到最终的web应用程序中。
与tomcat7插件相比,您的外部tomcat启动应用程序的方式一定有所不同。也许你可以试试-X选项:
mvn -X tomcat7:run
这应该会注销一些嵌入式tomcat正在配置的细节。。