Rod*_*iro 3 structure pom.xml maven
我的项目的结构如下:
.
|--module
| `-- pom.xml
| --submodule
| `-- pom.xml
`-- pom.xml
Run Code Online (Sandbox Code Playgroud)
POM(简体):
.
|--module
| `-- pom.xml
| --submodule
| `-- pom.xml
`-- pom.xml
Run Code Online (Sandbox Code Playgroud)
<project>
<modelVersion>4.0.0</modelVersion>
<artifactId>project</artifactId>
<name>Project</name>
<groupId>org.myorg</groupId>
<version>1.0.6-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module</module>
</modules>
(...)
</project>
Run Code Online (Sandbox Code Playgroud)
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.myorg</groupId>
<artifactId>project</artifactId>
<version>1.0.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>module</artifactId>
<name>Module</name>
<groupId>org.myorg</groupId>
<version>1.0.6-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>submodule</module>
</modules>
(...)
</project>
Run Code Online (Sandbox Code Playgroud)
maven install在POM的项目或模块中运行时,将成功构建项目。但是,在子模块中运行时会出现以下错误:
无法在项目子模块上执行目标:找不到工件org.myorg:project:pom:1.0.6-SNAPSHOT
为什么我的子模块找不到POM 项目?指定了相对路径。
我注意到的第一件事是,每个具有父级的子模块都包含以下行:
<relativePath>../pom.xml</relativePath>
Run Code Online (Sandbox Code Playgroud)
这是没有用的,因为它是maven中的默认值,或者将其删除。
此外,在多模块构建中,您不应定义版本。如果groupId始终相同,则您也可以省略groupId,因为当前模块从其父级继承了该版本。
模块:pom.xml
<project>
<parent>...
</parent>
<artifactId>module</artifactId>
<packaging>pom</packaging>
<name>Module</name>
<modules>
<module>submodule</module>
</modules>
(...)
</project>
Run Code Online (Sandbox Code Playgroud)
除此之外,您无法进入子模块并调用
mvn install
Run Code Online (Sandbox Code Playgroud)
如果要安装多模块构建中的单独模块,则应使用以下内容:
mvn -amd -pl submodule install
Run Code Online (Sandbox Code Playgroud)
它将完成您想做的事情,但是通常您应该安装完整的多模块构建,除非您完全知道自己在做什么。-amd选项是--also-make-dependents的缩写。该-pl是一个缩写--projects确定应当在通话过程中进行项目的列表。
| 归档时间: |
|
| 查看次数: |
10296 次 |
| 最近记录: |