gpt4 book ai didi

maven-3 - 在多模块maven项目中,如何为每个模块执行正确的目标?

转载 作者:行者123 更新时间:2023-12-02 05:17:47 27 4
gpt4 key购买 nike

我的原型(prototype)中有三个 Maven 项目:

bookman (main project)
|-- bookman-back-lend (module, simple service app)
\-- bookman-front-web (module, simple web app)

这是一个非常简单的示例图书借阅应用程序(用于图书馆或其他东西),用于学习各种技术和所有这些。

问题是我不能让父 pom 在模块 pom 中执行目标。

调用 mvn clean package wildfly:部署在任何模块中单独工作都没有问题。它编译、部署、替换 war 、Wildfly 8 做它的事情等等。但是如果我用 调用父 POM mvn 清洁包 (我什至不知道该叫什么......),它并没有做太多 - 当然它不会部署到任何模块。 Wildfly 不为所动。在父 POM 中,调用 mvn clean package wildfly:部署不工作,当然。

这是父 pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.mader.bookman</groupId>
<artifactId>bookman</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<name>Main BookMan superproject.</name>
<description>Main BookMan superproject.</description>

<modules>
<module>bookman-front-web</module>
<module>bookman-back-lend</module>
</modules>
</project>

还有模块 POM,为了简洁起见,删掉了一些东西(我认为它们与我的问题无关)。

bookman-front-web/pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>bookman-front-web</artifactId>
<packaging>war</packaging>
<name>Frontend project - webpage.</name>
<description>Web page to handle lending books.</description>

<parent>
<groupId>org.mader.bookman</groupId>
<artifactId>bookman</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<properties>
...
</properties>

<repositories>
...
</repositories>

<dependencyManagement>
...
</dependencyManagement>

<dependencies>
...
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<defaultGoal>clean package wildfly:deploy</defaultGoal>

<plugins>
<plugin> <!-- To use, run: mvn clean package wildfly:deploy -->
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${version.wildfly.maven.plugin}</version>
</plugin>
</plugins>
</build>
</project>

和 bookman-back-lend/pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>bookman-back-lend</artifactId>
<packaging>war</packaging>
<name>Backend project - lending.</name>
<description>Business logic to handle books, users and act of lending.</description>

<parent>
<groupId>org.mader.bookman</groupId>
<artifactId>bookman</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<properties>
...
</properties>

<repositories>
...
</repositories>

<dependencyManagement>
...
</dependencyManagement>

<dependencies>
...
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<defaultGoal>clean package wildfly:deploy</defaultGoal>

<plugins>
<plugin> <!-- To use, run: mvn clean package wildfly:deploy -->
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${version.wildfly.maven.plugin}</version>
</plugin>
</plugins>
</build>
</project>

应该可以为每个模块单独执行定制的目标,对吗?对?否则,那些聚合的 POM 将毫无用处。

不幸的是,像 this 这样的问题建议在父 POM 上执行的 Maven 目标与在子 POM 上执行的目标完全相同。谁想出这样的事情?如果我在每个子模块中需要完全不同的目标怎么办?

All answers我发现已经几岁了,也许……只是也许……理智占了上风,maven现在允许这样的事情?毕竟,执行此操作所需的所有信息都应该是可访问的,例如 defaultGoal 标记。

最佳答案

问题以彻底的方式解决了。 Maven 已死,万岁 Gradle .

前几天我一直在修改它,我已经将原型(prototype)移到了它实际工作的地方。虽然还有很多工作要做,但我已经知道我不会回头了。

所以,是的......如果您有因各种原因无法轻松完成或根本无法使用 Maven 完成的要求,请考虑使用 Gradle。事实上,无论如何都要考虑 Gradle。

关于maven-3 - 在多模块maven项目中,如何为每个模块执行正确的目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175877/

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