Maven Tomcat7运行依赖战争

时间:2016-03-24 15:40:17

标签: java maven tomcat

我对maven及其tomcat7插件有疑问:)

我有以下maven项目:

  • plugin1:打包为jar的普通java项目
  • plugin2:打包为jar的普通java项目
  • webapp:打包为jar的独立webapp项目

这三个项目在maven中正确构建,结果正常:

  • 我可以使用plugin1 / plugin2
  • 中的jar
  • 我可以将webapp war文件部署到Web容器
  • 我可以运行tomcat7:运行以启动webapp

现在,我需要提供包含特定插件设置的webapp的不同包装。 即我想用webapp + plugin1生成一个war文件,另一个用webapp + pugin2生成

为实现这一目标,我创建了2个额外的maven项目,这些项目在webapp项目上声明了依赖项+相应的插件项目,并打包为战争。 生成的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>

谢谢!

注意:很长一段时间潜伏,第一次问问这里,如果遗失了一些信息告诉我:)

1 个答案:

答案 0 :(得分:0)

根据项目的结构,添加war类型的依赖项可能不够。您可能还需要按照maven-war-plugin中的说明配置<overlays>。 看起来您的最终战争并未提供您期望的完整Web配置。使用overlays,您可以配置依赖项中的资源如何打包到最终的Web应用程序中。

与tomcat7插件相比,外部tomcat启动应用程序的方式必须有所不同。也许你可以尝试-X选项:

mvn -X tomcat7:run

这应该注明嵌入式tomcat正在配置的一些细节。