Maven 2 如何在不部署JAR的情况下在Maven中配置子项目依赖关系?

Maven 2 如何在不部署JAR的情况下在Maven中配置子项目依赖关系?,maven-2,module,subproject,Maven 2,Module,Subproject,我在谷歌上搜索了一下,似乎没有人知道答案,但这似乎是一件基本的事情,它应该是可能的 我有以下项目结构: parent ---sub-project1 ---sub-project2 子项目2需要将子项目1作为依赖项 所以我在sub-project2的pom中有这样的内容: <dependencies> <dependency> <artifactId>sub-project1</artifactId>

我在谷歌上搜索了一下,似乎没有人知道答案,但这似乎是一件基本的事情,它应该是可能的

我有以下项目结构:

parent
   ---sub-project1
   ---sub-project2
子项目2需要将子项目1作为依赖项

所以我在sub-project2的pom中有这样的内容:

 <dependencies>
    <dependency>
         <artifactId>sub-project1</artifactId>
        <groupId>mygroup</groupId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

由于存在大量未找到的类/包错误

您应该在父级拥有一个主pom,在其中您将列出项目的模块

  <modules>
    <module>sub-project1</module>
    <module>sub-project2</module>>
  </modules>

子项目1
子项目2>
在每个子项目中,您必须参考您的父项目:

<parent>
    <artifactId>parent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

父母亲
mygroup
1.0-快照
您可以像以前一样指定项目之间的依赖关系。我想你错过了我描述的一些步骤

编辑:您应该在父级发布您的mvn clean install

当我这样做时,Maven会尝试下载sub-project1.jar文件,该文件不存在,因为它还没有准备好进行repo

这是正常的行为,Maven通过本地存储库解析依赖项,因此您需要首先安装子项目1。实际上,处理这种情况的常用方法是从父级启动反应堆构建(多模块构建)

假设您正在聚合父级中的模块,即在“父级”
pom.xml
中声明了类似的内容:

<modules>
  <module>sub-project1</module>
  <module>sub-project2</module>>
</modules>
然后,Maven将计算构建顺序(从由模块及其依赖项组成的定向图中扣除),并在所有模块上以计算的顺序运行
install
(对于特定示例,先是父模块,然后是子项目1,最后是子项目2)

但是不要使用导入类型的,您在这里使用不当。移除它


更新:在我回答问题时,问题已经更新,显示的POM没有说明原始问题中给出的情况(反向依赖,工件id中可能存在错误)。但建议的方法仍然适用。删除依赖项上的
导入
,并从父级启动反应器构建。

否我拥有所有这些。但是我知道我遗漏了一些东西,所以我只发布一些pom片段。您不需要使用导入范围。我已经在毫无问题地使用多模块项目,发布您的POM以便我们可以查看!)实际上,您不必引用父级(即使这是最常见的情况),继承和聚合是分离的概念。在我的情况下,当我尝试使用submodule1类到我的submodule2时,submodule1类中出现错误,好像没有找到它所需的依赖项jar…有什么建议吗?我有一些类似的情况,但我需要父项目中的子项目1依赖项。我有父项,依赖项集,正如这里所提到的。关于我们如何解决这个问题有什么线索吗?让我知道我是否应该在这里发布POM。您是否指定了子项目的groupId和版本?在我的例子中,当我尝试使用submodule1类来定义我的submodule2时,submodule1类中出现了错误,好像没有找到它所需的依赖项jar……有什么建议吗?
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
  <modules>
    <module>sub-project1</module>
    <module>sub-project2</module>>
  </modules>
<parent>
    <artifactId>parent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modules>
  <module>sub-project1</module>
  <module>sub-project2</module>>
</modules>
$ cd parent
$ mvn install