【问题标题】:Maven Tomcat7 run a dependency warMaven Tomcat7 运行依赖战争
【发布时间】:2016-07-12 06:46:26
【问题描述】:

我有一个关于 maven 及其 tomcat7 插件的问题 :)

我有以下 maven 项目:

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

这三个项目在 maven 中正确构建,结果运行良好:

  • 我可以使用 plugin1/plugin2 中的 jars
  • 我可以将 webapp war 文件部署到 web 容器中
  • 我可以运行 tomcat7:run 来启动 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>

谢谢!

注意:长期潜伏,第一次在这里提问,如果缺少某些信息,请告诉我:)

【问题讨论】:

    标签: java maven tomcat


    【解决方案1】:

    根据你的项目结构,仅仅添加一个war类型的依赖可能是不够的。您可能还需要按照此处maven-war-plugin 的描述配置&lt;overlays&gt;。 看起来您的最终战争没有提供您期望的完整 Web 配置。使用overlays,您可以配置依赖项中的资源将如何打包到您的最终 Web 应用程序中。

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

    mvn -X tomcat7:run
    

    这应该会注销嵌入式 tomcat 正在配置的一些详细信息..

    【讨论】:

    • 嗨,我确实读过关于覆盖的文章,但在我看来,如果我的问题是关于最后一代战争的,这可能很有用。在我当前的设置中,/target 中生成的战争是可以的(并且部署正确)。仍然覆盖可能是修复 tomcat7:run 行为的一种方法,但后来我不知道该怎么做:( [我将再次阅读您提供的链接!]
    • 有很多调试信息!但对我来说没有任何意义:(
    猜你喜欢
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2017-01-31
    • 2017-05-23
    • 2014-10-13
    相关资源
    最近更新 更多