Mik*_*oss 18 maven-2 module subproject
我用谷歌搜索了这个似乎没有人有答案,但似乎这样的基本事情应该是可能的.
我有以下项目结构:
parent
---sub-project1
---sub-project2
Run Code Online (Sandbox Code Playgroud)
sub-project2需要将sub-project1作为依赖项.
所以我在sub-project2的pom中有这个:
<dependencies>
<dependency>
<artifactId>sub-project1</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
....
当我这样做时,Maven尝试下载sub-project1.jar文件,该文件不存在,因为它还没有为repo做好准备.
我试图<scope>import</scope>在依赖中添加一个,但这也不起作用 - 结果相同.
那么在构建子项目2时,我需要做些什么才能让Maven查看子项目1?
编辑这里有一些pom片段:
家长:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<prerequisites>
<maven>2.0.9</maven>
</prerequisites>
<modules>
<module>sub-project1</module>
<module>sub-project2</module>
</modules>
....
Run Code Online (Sandbox Code Playgroud)
子PROJECT1:
<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">
<parent>
<artifactId>parent</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sub-project1</artifactId>
....
Run Code Online (Sandbox Code Playgroud)
分项目2:
<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">
<parent>
<artifactId>parent</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sub-project1</artifactId>
<dependencies>
....
<dependency>
<artifactId>sub-project2</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
<scope>import</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我mvn clean install 上父母时得到的错误是:
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Run Code Online (Sandbox Code Playgroud)
有很多类/包找不到错误
mgv*_*mgv 19
您应该在父级别拥有一个主pom,您将在其中列出项目的模块.
<modules>
<module>sub-project1</module>
<module>sub-project2</module>>
</modules>
Run Code Online (Sandbox Code Playgroud)
在每个子项目中,您必须引用您的父项:
<parent>
<artifactId>parent</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
然后就像你一样指定项目之间的依赖关系.我想你错过了我描述过的一些步骤.
编辑:您应该在父级别发出mvn clean install.
Pas*_*ent 10
当我这样做时,Maven尝试下载sub-project1.jar文件,该文件不存在,因为它还没有为repo做好准备.
这是正常行为,Maven通过本地存储库解析依赖关系,因此您需要首先进行install子项目1.实际上,处理这种情况的常用方法是从父级启动反应器构建(多模块构建).
假设您正在聚合父级中的模块,即您在"父级"中声明了类似的内容pom.xml:
<modules>
<module>sub-project1</module>
<module>sub-project2</module>>
</modules>
Run Code Online (Sandbox Code Playgroud)
刚cd进入父目录,并启动反应堆建设:
$ cd parent
$ mvn install
Run Code Online (Sandbox Code Playgroud)
然后Maven会计算生成顺序(从制造模块和它们的依赖关系的有向图中扣除),并运行install 在所有模块的计算顺序(先为您的特定示例中,父,然后子PROJECT1最后分项目2).
但是不要使用范围类型import,你在这里滥用它.去掉它.
更新:问题在我回答时已经更新,显示的POM没有说明原始问题中给出的情况(反向依赖,工件id中可能存在错误).但建议的方法仍然适用.删除<scope>import</scope>依赖项并从父项启动reactor构建.
| 归档时间: |
|
| 查看次数: |
22665 次 |
| 最近记录: |