如何配置,而无需部署罐子在Maven的子项目依赖?
-
24-09-2019 - |
题
我GOOGLE了这一点,似乎没有人有答案,但它似乎是这样一个基本的东西,它应该是可能的。
我有以下的项目结构:
parent
---sub-project1
---sub-project2
子项目2需要具有子PROJECT1作为依赖
所以我有这个子项目2的POM:
<dependencies>
<dependency>
<artifactId>sub-project1</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
...
当我这样做时,Maven试图下载中心副project1.jar文件,该文件不存在,因为它不准备回购呢。
我试图把一个<scope>import</scope>
的依赖,但没有任何工作 - 同样的结果
那么,我所要做的建设子项目2时得到Maven来看看子PROJECT1?
修改强>这里有一些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>
....
子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>
....
子项目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>
在我父mvn clean install
我得到的错误是:
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
使用了大量的类/软件包暂时发现错误
解决方案
您应该在父母的一级主POM,您将在其中列出项目的模块。
<modules>
<module>sub-project1</module>
<module>sub-project2</module>>
</modules>
在各子项目必须引用父:
<parent>
<artifactId>parent</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
和指定,就像你做的项目之间的依赖关系。我想你已经错过了一些我所描述的步骤。
编辑:你应该发出您的 MVN全新安装是在父级别
。其他提示
当我这样做时,Maven试图下载中心副project1.jar文件,该文件不存在,因为它不准备回购呢。
这是正常的行为,通过Maven的本地仓库解决依赖,所以你需要install
子PROJECT1第一。实际上,为了应对这种情况的常见方式是从父启动器版本(多模块构建)。
假设你聚集在父即你有这样的事情在“父” pom.xml
声明模块:
<modules>
<module>sub-project1</module>
<module>sub-project2</module>>
</modules>
只需cd
到父目录,并启动一个反应器的构建:
$ cd parent
$ mvn install
Maven将接着的计算的构建顺序并运行install
(从制成的模块和它们的依赖的有向图中扣除)的上的所有模块强>在计算出的顺序(父第一,然后再转PROJECT1最后分项目2为您的特殊例子)。
但是,不要使用范围一>型import
的,你在这里误用。将其删除。
更新:的问题一直当我回答和更新的显示也没有说明(在工件ID反向相关性,可能的错误),在原来的问题中给出的情况多金属氧酸盐。但建议的方法仍然适用。的依赖卸下<scope>import</scope>
并从父开始反应器的构建。