gpt4 book ai didi

maven-2 - 多模块Maven项目和 jetty :run

转载 作者:行者123 更新时间:2023-12-03 07:50:48 25 4
gpt4 key购买 nike

我正在尝试将 Maven WAR 项目拆分为两个模块,以便可以使用命令行工具构建单独的 JAR 文件。结果具有以下结构:

  • pom.xml (包装pom,有两个模块)
  • project-jar/
  • pom.xml (包装jar)
  • project-war/
  • pom.xml (包装 war ,取决于 project-jar )

  • 如果我运行 mvn来自root的命令,一切正常。我想继续使用 mvn jetty:run ,但为此我需要在 WAR 子项目中执行命令。如果我这样做,找不到 project-jar子项目,所以它不会运行。偶 mvn jetty:run-wartarget 中有一个完全组装的 WAR 文件目录失败,因为它首先尝试“构建”项目。我只能通过安装 project-jar 使它工作。进入本地 Maven 存储库,这不是很好。

    有没有办法在多模块 Maven 配置中使用 Jetty 插件?

    最佳答案

    在 war 模块 ( project-war ) 中创建配置文件。在此配置文件中,将 jetty 配置为附加到生命周期阶段并执行 run明确的目标。现在,当 maven 在启用该配置文件的情况下从顶层项目运行时,它将调用 jetty:run 并具有姊妹模块依赖关系解析(从顶层项目执行 maven 命令时是正常的)。

    示例配置,当放置在 web 模块 (project-war) 的 pom.xml 中时,安排 jetty:run 在 test 期间执行阶段。 (您可以选择另一个阶段,但要确保它在 compile 之后。)

    从顶层运行:mvn test -Pjetty-runmvn test -DskipTests=true -Pjetty-run .这将根据需要编译依赖项并使它们可用,但在正确的模块中调用 jetty:run。

    <profiles>
    ...
    <!-- With this profile, jetty will run during the "test" phase -->
    <profile>
    <id>jetty-run</id>
    <build>
    <plugins>
    <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>7.1.6.v20100715</version>
    <configuration>
    ...
    <webAppSourceDirectory>
    ${project.build.directory}/${project.build.finalName}
    </webAppSourceDirectory>
    ...
    </configuration>
    <executions>
    <execution>
    <id>jetty-run</id>
    <phase>test</phase>
    <goals>
    <goal>run</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </profile>
    ...
    </profiles>

    关于maven-2 - 多模块Maven项目和 jetty :run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636493/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com