当前位置: 首页 > 面试题库 >

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

易风华
2023-03-14
问题内容

我想在某种类型的全局项目目录中有一个模块,以便可以在使用该通用代码的所有其他项目中包含该模块。

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

这种简单化方法的缺点是,其他项目只有在检出project-commons并运行后才能编译mvn install

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



 类似资料:
  • 问题内容: 如何使用Docker文件中的“ ADD”命令从Docker构建上下文之外包含文件? 从Docker文档中: 路径必须在构建上下文内;您不能添加../something/something,因为Docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。 我不想为了适应Docker而重组我的整个项目。我想将所有Docker文件保留在同一子目录中。 此外,似乎Docker

  • 路径必须在生成的上下文中;您不能添加../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程。 我不想重组我的整个项目只是为了在这件事上容纳Docker。我想把我所有的Docker文件都保存在同一个子目录中。 此外,Docker似乎还不支持(可能永远也不支持)符号链接:Dockerfile ADD命令不跟随主机#1676上的符号

  • 如何在导入到另一个模块的jar中包括测试目录(src/test/)下的Spring bean? 我有几个Maven项目: ms1、ms2、ms3和通用共享。通用共享是一个多模块的Maven项目。它包含几个模块:通用共享utills、通用共享fs等... 在每个子模块中,我都有一个专用的pom。xml以及所需的所有依赖项,在通用共享pom中,我有关于构建和模块的详细信息: 似乎我为子模块中的测试(位

  • 问题内容: 当我运行“清理并生成”时,仅在文件夹位于文件的同一文件夹时,才会运行正在创建的文件。 因此,如果我将jar文件移动到桌面并将该文件夹保留在该文件夹中,则jar文件将给我一个例外。 我该如何解决这个问题? 问题答案: 如果将jars复制到源代码目录中,它们将位于您的最终jar中。但是,我不确定这是否会在100%的时间内有效。 java-forum上有一篇很棒的文章,内容如下: 除了少数情

  • 我有一个spring boot mavel多模块项目。 如果Spring启动模块依赖于模块,并且在模块的文件夹中有一个属性文件或其他一些资源,我希望捆绑在最终的Spring启动应用程序中,我如何实现这一点。 目前,如果我在模块A JAR上运行,它包括文件: 然而: 提前感谢您的任何建议。