我的原型中有三个maven项目:
bookman (main project)
|-- bookman-back-lend (module, simple service app)
\-- bookman-front-web (module, simple web app)
这是一个非常简单的示例图书借阅应用程序(用于图书馆或其他东西),以学习各种技术和所有这些。
问题是我不能让父pom在模块poms中执行目标。
在任何模块中单独调用 mvn clean package wildfly:deploy 可以正常工作。它编译,部署,战争被替换,Wildfly 8做它的事情,等等。但是如果我用 mvn clean package 打电话给父POM(我甚至不确定该怎么称......),它没有做太多 - 当然它没有部署到wildfly任何模块。 Wildfly不会让步。在父POM中,当然,调用 mvn clean package wildfly:deploy 不起作用。
这是父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,为了简洁起见了一些东西(我假设它们与我的问题无关)。
书商前方的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标记。
答案 0 :(得分:-1)
问题以激进的方式解决了。 Maven死了,万岁Gradle。
我最近几天正在修补它,我已经将原型移动到实际工作的位置。虽然还有很多工作要做,但我已经知道我不会回头。
所以,是的......如果你因为各种原因而无法轻易完成或完全不能使用Maven,那么请考虑Gradle。事实上,无论如何都要考虑Gradle。