我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>并从父开始反应器的构建。

scroll top