Maven Tomcat7发起了一场依赖战争



我有一个关于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正在配置的细节。。

最新更新