java - 如何在项目上下文之外包含 Maven 模块?

标签 java maven svn maven-module

我希望在某种全局项目目录中有一个模块,以便我可以将该模块包含在使用该公共(public)代码的所有其他项目中。

但是我怎样才能告诉 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

父 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 package 结果:

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>

这种简单方法的缺点是,在您 checkout project-commons 并运行 mvn install 之前,您的其他项目不会编译。

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

关于java - 如何在项目上下文之外包含 Maven 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23912078/

相关文章:

svn - 如何将两个 Subversion 提交合并为一个

java - 如何将atmosphere-spade-server与atmosphere-pubsub.war结合使用

svn - 为什么我不想在版本控制中使用中央存储库? SVN 与 Git 问题

Eclipse + 颠覆 : Can't create session

java - 在 Quartz 和 Apache Camel 中使用计时器

java - Jetty 11 不检测 Servlet

spring - 生命周期配置未涵盖插件执行

java - JSpinner 专门用于时间

java - 是否可以在变量访问/写入时停止 Debug模式的执行?

java - 循环测试结果为空,程序崩溃