Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven无法从子目录生成子模块_Java_Maven - Fatal编程技术网

Java maven无法从子目录生成子模块

Java maven无法从子目录生成子模块,java,maven,Java,Maven,我有一个maven项目,包含父pom和子模块,结构如下: root/pom.xml root/parent/pom.xml root/child1/pom.xml root/child2/pom.xml root/child2/child21/pom.xml 每个子pom和根pom都将根/父项声明为其父项。child21将child1作为依赖项 当我尝试从child1目录执行mvn安装时,maven成功地构建并安装了child1jar。但当我从child2或child21目录执行mvn安装时,

我有一个maven项目,包含父pom和子模块,结构如下:

root/pom.xml
root/parent/pom.xml
root/child1/pom.xml
root/child2/pom.xml
root/child2/child21/pom.xml
每个子pom和根pom都将根/父项声明为其父项。child21将child1作为依赖项

当我尝试从child1目录执行mvn安装时,maven成功地构建并安装了child1jar。但当我从child2或child21目录执行mvn安装时,maven会出现以下错误:

[错误]无法在项目child21上执行目标:无法解析项目groupId:child21:jar:0.0.1-SNAPSHOT:无法在groupId:child1:jar:0.0.1-SNAPSHOT:无法读取groupId:child1:jar:0.0.1-SNAPSHOT的项目描述符:无法在jme repo()中找到项目groupId:parent:pom:0.0.1-SNAPSHOT的依赖项->[帮助1]

我曾尝试用谷歌搜索我的项目结构可能有什么问题,但运气不佳。有人能为child21的构建提供建议吗?


我的POM包含:

根目录

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>./parent/pom.xml</relativePath>
</parent>
<artifactId>root</artifactId>
<packaging>pom</packaging>

<modules>
    <module>child1</module>
    <module>child2</module>
</modules>
<groupId>groupId</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>groupId</groupId>
            <artifactId>child1</artifactId>
            <version>${project.version}</version>
        </dependency>
        ...
    </dependencies>
<dependencyManagement>

<repositories>
    <repository>
        <id>jme-repo</id>
        <name>JME3 Official Maven Repo</name>
        <url>http://updates.jmonkeyengine.org/maven/</url>
    </repository>
</repositories>

<build>
    <plugins>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
            <source>${java.source.version}</source>
            <target>${java.target.version}</target>
        </configuration>
    </plugins>
</build>

groupId
父母亲
0.0.1-快照
./parent/pom.xml
根
聚甲醛
孩子1
孩子2
家长

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>./parent/pom.xml</relativePath>
</parent>
<artifactId>root</artifactId>
<packaging>pom</packaging>

<modules>
    <module>child1</module>
    <module>child2</module>
</modules>
<groupId>groupId</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>groupId</groupId>
            <artifactId>child1</artifactId>
            <version>${project.version}</version>
        </dependency>
        ...
    </dependencies>
<dependencyManagement>

<repositories>
    <repository>
        <id>jme-repo</id>
        <name>JME3 Official Maven Repo</name>
        <url>http://updates.jmonkeyengine.org/maven/</url>
    </repository>
</repositories>

<build>
    <plugins>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
            <source>${java.source.version}</source>
            <target>${java.target.version}</target>
        </configuration>
    </plugins>
</build>
groupId
父母亲
0.0.1-快照
聚甲醛
groupId
孩子1
${project.version}
...
jme回购
JME3官方Maven回购协议
http://updates.jmonkeyengine.org/maven/
org.apache.maven.plugins
maven编译器插件
3.2
${java.source.version}
${java.target.version}
儿童1

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

<artifactId>child1</artifactId>
<packaging>jar</packaging>

<dependencies>...</dependencies>
<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>child21</artifactId>
<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>groupId</groupId>
        <artifactId>child1</artifactId>
    </dependency>
</dependencies>

groupId
父母亲
0.0.1-快照
../parent/pom.xml
孩子1
罐子
...
儿童2

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>
<artifactId>child2</artifactId>
<packaging>pom</packaging>

<modules>
    <module>child21</module>
</modules>

groupId
父母亲
0.0.1-快照
../parent/pom.xml
孩子2
聚甲醛
孩子21
儿童21

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

<artifactId>child1</artifactId>
<packaging>jar</packaging>

<dependencies>...</dependencies>
<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>child21</artifactId>
<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>groupId</groupId>
        <artifactId>child1</artifactId>
    </dependency>
</dependencies>

groupId
父母亲
0.0.1-快照
../../parent/pom.xml
孩子21
罐子
groupId
孩子1

使用解决方案更新 根据下面接受的答案,我添加了父项目作为根pom的一个模块:

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>./parent/pom.xml</relativePath>
</parent>
<artifactId>root</artifactId>
<packaging>pom</packaging>

<modules>
    <module>parent</module>
    <module>child1</module>
    <module>child2</module>
</modules>

groupId
父母亲
0.0.1-快照
./parent/pom.xml
根
聚甲醛
父母亲
孩子1
孩子2

然后,当开发人员第一次构建项目时,就会安装父pom。随后,他们将能够独立构建child2和child21项目。

将child21更改为从其父代child2继承,请参见以下内容:

<parent>
   <groupId>groupId</groupId>
   <artifactId>child2</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</parent>

groupId
孩子2
0.0.1-快照

这是一个相当笨拙的模块结构,但它仍然可以工作。问题是,当您构建模块
child21
(或
child2
)时,
child1
依赖项不是当前构建的一部分,而是在存储库中查找的。该依赖项的父项也是如此,即
父项
模块。但是,我假设,
parent
从未安装在那里-如果在
root
上运行
mvn clean install
,它不会构建
父级
,父级只在
子级
模块中通过相对路径引用


要修复它,您必须首先将
父级
POM安装到存储库中。在父模块中运行
mvn安装
。之后,构建
child1
——它也将安装到存储库中。现在,存储库中提供了构建模块child21所需的所有内容。

bullseye。我将parent作为一个模块添加到根pom中,它就像一个符咒。非常感谢。模块结构是我从工作中学到的,有些模块有不同的父模块。所以有些模块有一组依赖项,有些模块有其他依赖项。这是因为有些项目是osgi捆绑包,有些是spring引导应用程序(从前者逐渐迁移到后者)。