我是Maven的新手。我从SVN检查了一个具有以下结构的客户的项目:
projectName
|--> pom.xml
|--> jetty-wrapper
|--> pom.xml
|--> bin
|--> pom.xml
|--> projectName-common
|--> pom.xml
|--> bin
|--> pom.xml
|--> projectName-war
|--> bin
|--> pom.xml
下面的pom.xml' projectName`(顶部的pom)正在构建三个模块
<modules>
<module>projectName-common</module>
<module>projectName-war</module>
<module>jetty-wrapper</module>
</modules>
但是当从文件夹mvn clean install
执行projectName
时,它会出现以下错误
Child module [...]projectName\projectName-war\pom.xml of [...]projectName\pom.xml does not exist
问题是:projectName-war
下方是否应该有一个pom.xml,就像我的客户可能忘记提交给SVN的其他模块一样?
答案 0 :(得分:25)
Child module [...]projectName\projectName-war\pom.xml of [...]projectName\pom.xml does not exist
如果从命令行使用mvn install时遇到上述错误(同样的pom可能在eclipse中工作)你必须改变你的pom.xml
而不是下面的内容:
<modules>
<module>../my-util</module>
<module>../my-server</module>
</modules>
按照以下内容(附在剖析器中):
<profiles>
<profile>
<modules>
<module>../my-util</module>
<module>../my-server</module>
</modules>
</profile>
</profiles>
答案 1 :(得分:7)
问题是:在projectName-war
下面是否应该有一个pom.xml
只需输入是。
你已经找到了诀窍,因为你还没有向maven提供一个名为 pom.xml 的项目描述符,它就无法调用 projectName-war 一个有效的子模块。
projectName-war 下必须有一个 pom.xml 文件,并且它必须具有与声明该模块的父项下的工件ID相匹配的工件ID,即
<artifactId>projectName-war</artifactId>
答案 2 :(得分:0)
This issue usually comes when you copy and paste the child projects
For example, We have individual child projects as below
<artifactId>business-layer</artifactId> with project name as business-layer
<artifactId>service-layer</artifactId> with project name as **xyz**-layer
<modules>
<module>business-layer</module>
<module>**service-layer**</module>
</modules>
You project name during the initial build should be same as the module name. This need not require the <profiles> tag to be added as the purpose of profiles tag is to trigger builds with specific actions
答案 3 :(得分:0)
如果将pom.xml放在正确的位置但其中有错误,也会出现此问题。
答案 4 :(得分:0)
当我通过 IntelliJ 重命名某些模块时遇到此错误:
我通过执行以下操作设法解决了这个问题:
右键单击每个模块的 pom.xml,然后从出现的列表中单击“Add as Maven Module
”