在Maven多模块项目中构建单个模块

3

我阅读了一些使用mvn -pl module -am的SO帖子。在我的情况下,错误是在反应堆中找不到选定的项目

目录结构:

  parent  
      pom.xml
  sample1
      pom.xml - has dependency on sample2
  sample2
      pom.xml

我刚刚在pom.xml文件的每个子节点的父节点中使用了relativePath,并且同样用于parent module part

   mvn install -pl sample1 -amd

抛出了那个错误。

   mvn install -pl ../sample1 -amd

构建了样本1但没有构建样本2。通过检查目标目录,我得出结论它未被构建。在样本2中,目录为空。

有什么建议吗?

   gopi@gopi-ThinkPad-T440s:~/learn/maven/parent$ mvn -e install -pl sample1 -amd
   [INFO] Error stacktraces are turned on.
   [INFO] Scanning for projects...
   [ERROR] Could not find the selected project in the reactor: sample1 -> [Help 1]
   org.apache.maven.MavenExecutionException: Could not find the selected project in the reactor: sample1
at org.apache.maven.DefaultMaven.trimSelectedProjects(DefaultMaven.java:749)
at org.apache.maven.DefaultMaven.createDependencyGraph(DefaultMaven.java:703)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:290)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at   org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

2
你能否将图片删除,并将相关的Maven输出作为文本呈现? - Greg Kopff
1个回答

1
我复制了您的错误,似乎与您将父级放在与样本相同的目录中有关。 我不确定,但我认为这违反了Maven的单根原则。 请参阅this博客文章。 它建议将父级分成两个部分,并使用包含模块的根pom,如下所示:
/pom.xml
/parent/pom.xml
/child1/pom.xml

根POM和子POM都将父级引用为parent。我尝试使用-pl和-amd标志进行操作,似乎可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接