Sure, here’s the translation: Maven构建依赖问题

huangapple go评论68阅读模式
英文:

Maven build dependency issue

问题

我在将子项目(模型)的 .jar 文件导入到其他项目时遇到了问题。

  • 父项目 <package>pom</package>
    • 子项目1 <package>jar</package>
    • 子项目2 <package>jar</package>
    • 子项目3 <package>war</package>

子项目1、2和3都依赖于父项目。

在构建父项目时,会构建子项目1、2的jar包和子项目3的war包。

子项目1是一个模型jar包,将在其他模块中使用。

将该jar包添加到其他模块后,它会寻找父项目。

如何解决这个问题,以便我可以将子项目1作为模型jar包用于其他模块?

这是我的父项目 POM 文件:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.2.7</version>
	<relativePath/>
</parent>

<groupId>com.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>MyProject POM</name>
<modules>
	<module>/myprojectModel</module>
	<module>/myproject</module>
	<module>/myprojectService</module>
</modules>

这是子项目1的 POM 文件:

<parent>
	<groupId>com.myproject</groupId>
	<artifactId>myproject-parent</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<relativePath/>
</parent>
<groupId>com.emc.nrp</groupId>
<artifactId>nemsprerequisite-model</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>Myproject Model</name>

因此,会构建3个包:

  • Child1.jar
  • Child2.jar
  • Child3.war

当我将 Child1.jar 导入另一个包时,出现了 "无法解析的父POM" 的问题。

错误信息:

ERROR [io.undertow.request] (default task-91) UT005023: 处理对 /business-central/maven2 的请求时出现异常: java.lang.RuntimeException: org.apache.maven.project.ProjectBuildingException: 构建 com.myproject.myproject-model:1.0.0-SNAPSHOT 的有效模型时遇到了1个问题
[FATAL] 无法解析 com.myproject.myproject-model:1.0.0-SNAPSHOT 的父POM: 在第5行,第10列找不到 artifact com.myproject.myproject-parent:pom:1.0.0-SNAPSHOT
英文:

i have issue while importing .jar of child project (model) to my other projects

  • Parent <package>pom</package>
    • child1 <package>jar</package>
    • Child2 <package>jar</package>
    • Child3 <package>war</package>

Child1,2 and 3 each dependent on parent.

Upon building parent it build child 1,2 jar and child 3 war.

Child 1 is a model jar that will be use in other module.

Upon adding the jar to other modules it looking for parent.

How do I resolve such that I can use child1 as model jar to other module?

Here is my POM parent

&lt;parent&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
	&lt;version&gt;2.2.7&lt;/version&gt;
	&lt;relativePath/&gt;
&lt;/parent&gt;

&lt;groupId&gt;com.myproject&lt;/groupId&gt;
&lt;artifactId&gt;myproject-parent&lt;/artifactId&gt;
&lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
&lt;packaging&gt;pom&lt;/packaging&gt;
&lt;name&gt; MyProject POM&lt;/name&gt;
&lt;modules&gt;
	&lt;module&gt;/myprojectModel&lt;/module&gt;
	&lt;module&gt;/myproject&lt;/module&gt;
	&lt;module&gt;/myprojectService&lt;/module&gt;
&lt;/modules&gt;

Here is my Child 1 pom

&lt;parent&gt;
	&lt;groupId&gt;com.myproject&lt;/groupId&gt;
	&lt;artifactId&gt;myproject-parent&lt;/artifactId&gt;
	&lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
	&lt;relativePath/&gt;
&lt;/parent&gt;
&lt;groupId&gt;com.emc.nrp&lt;/groupId&gt;
&lt;artifactId&gt;nemsprerequisite-model&lt;/artifactId&gt;
&lt;packaging&gt;jar&lt;/packaging&gt;
&lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
&lt;name&gt; Myproject Model&lt;/name&gt;

So it will build 3 package

- Child1.jar

- Child2.jar

- Child3.war

When i import Child1.jar to another package it appear to have

Non-resolvable parent POM

This is the issue.

ERROR [io.undertow.request] (default task-91) UT005023: Exception handling request to /business-central/maven2: java.lang.RuntimeException: org.apache.maven.project.ProjectBuildingException: 1 problem was encountered while building the effective model for com.myproject.myproject-model:1.0.0-SNAPSHOT

[FATAL] Non-resolvable parent POM for com.myproject.myproject-model:1.0.0-SNAPSHOT: Could not find artifact com.myproject.myproject-parent:pom:1.0.0-SNAPSHOT @ line 5, column 10

答案1

得分: 1

  1. 在所有模块的src/java目录上右键单击,然后点击“标记目录为”,接着点击“源根”,如下面的截图所示:

  2. 我认为你应该创建一个额外的模块,加载所有子依赖项,并且在该模块中只有Application.java。

更多详情请参阅此链接

英文:
  1. Right click on src/java directory of all modules, and Click "Mark Directory as" and then click "Sources Root" as shown in below screenshot:
  2. Sure, here’s the translation:
Maven构建依赖问题select as sour

2.I think you should create on more module which loads all the child dependencies and have only Application.java in that module.

Follow this link for more details.

答案2

得分: 0

相对路径元素在您子项目的pom文件中是空的。请设置它。

英文:

The relativePath element in your child pom is empty. Set that.

huangapple
  • 本文由 发表于 2020年9月4日 13:58:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/63735611.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定