微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在项目上下文之外包含maven模块?

我想在某种全局项目目录中有一个模块,这样我就可以将该模块包含在使用该公共代码的所有其他项目中.

但是,我怎么能告诉maven父pom包含并编译这个全局共享模块呢?
以下不起作用:

svn/MyGlobalProject/project-commons/pom.xml           //should be shared among different projects
svn/MyProject/web-parent/trunk/pom.xml                //the parent pom used to build the application
svn/MyProject/web-parent/trunk/project-domain/pom.xml //submodule 1
svn/MyProject/web-parent/trunk/project-web/pom.xml    //submodule 2

parent pom.xml:

<project>
        <groupId>de.project</groupId>
    <artifactId>project-parent</artifactId>
    <packaging>pom</packaging>

    <modules>
        <module>project-domain</module>
        <module>project-web</module>
        <module>../project-commons</module> <!-- Error -->
    </modules>
</project>

mvn包导致:

Child module trunk\project-commons of trunk\pom.xml does not exist

解决方法:

如果在该全局项目上运行mvn install,它将安装在本地存储库中.然后,您的其他项目可以将其作为依赖项引用:

<dependency>
  <groupId>whatever</groupId>
  <artifactId>project-commons</artifactId>
  <version>1.0</version>
</dependency>

这种简单方法的缺点是,在您检出项目公共文件并运行mvn install之前,您的其他项目将无法编译.

更高级的方法是部署可以将全局工件部署到的网络可访问存储库(例如Artifactory或Nexus). Artifactory有一个免费的社区版本.然后,您可以在设置文件中列出此存储库,Maven将解析上传到它的工件.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐