当前位置: 首页 > 知识库问答 >
问题:

设置Maven以允许轻松部署到不同的存储库

宣胜
2023-03-14

我目前在一个我为很多人定义规则的环境中工作。我们目前使用Hudson和artiFactory,我想评估切换到Jenkins和Nexus是否值得迁移成本(但这不是问题)。

为了评估它,我在本地设置了Maven、Jenkins和Nexus,我试图找到一个设置来使用以前的设置,以便我可以比较解决方案。这里的问题是:

>

注意:安装和用户配置不能用于添加共享项目信息,例如,设置或公司范围。

我们当前的根POM包含以下部分:

<distributionManagement>
    <repository>
      <uniqueVersion>false</uniqueVersion>
      <id>company-central</id>
      <name>Company central maven respository</name>
      <url>https://company.com/artifactory/libs-releases</url>
    </repository>
    <snapshotRepository>
      <id>company-snaps</id>
      <name>company-snapshots</name>
      <url>https://company.com/artifactory/libs-snapshots</url>
    </snapshotRepository>
    <downloadUrl>https://company.com/artifactory/libs-releases</downloadUrl>
  </distributionManagement>

使用相同的POM但将其部署到不同的存储库管理器的最简单方法是什么?

PS:我已经阅读了为不同的部署场景设置maven pom文件并且不喜欢它(在我的上下文中),将Maven工件部署到具有不同设置的多个存储库确实是一个不同的问题。maven中的多个部署是一种有趣的方法,但我必须仅为此目的修改大量POM。

共有1个答案

松博耘
2023-03-14

我在一个类似的团队中,为其他人提供工具。我们的父POM(不是settings.xml)设置如下。除非我的团队成员将-DuseTestRepo=true添加到mvn命令行,否则prod版本处于活动状态。您可以尝试更改激活以查找仅存在于Jenkins服务器上的特定文件(例如)。我还想知道Maven是否在repo URL中插入属性。如果是这样,您可以执行

<profiles>
    <profile>
        <id>test-repository</id>
        <activation>
            <property>
                <name>useTestRepo</name>
                <value>true</value>
            </property>
        </activation>
        <properties>
        </properties>
        <distributionManagement>
            <repository>
                 <!-- ... -->
            </repository>
            <snapshotRepository>
                 <!-- ... -->
            </snapshotRepository>
        </distributionManagement>
    </profile>

    <profile>
        <id>prod-repository</id>
        <activation>
            <property>
                <name>!useTestRepo</name>
            </property>
        </activation>
        <properties>
        </properties>
        <distributionManagement>
            <repository>
                 <!-- ... -->
            </repository>
            <snapshotRepository>
                 <!-- ... -->
            </snapshotRepository>
        </distributionManagement>
    </profile>

至于交付(部署)您的实验性父POM——您会将其部署到您的测试Nexus存储库中,对吗?并且您的开发人员都不会访问它,只有您。因此,艺术工厂将包含真正的com.company:企业父级:1.0POM,而Nexus是com.company:企业父级:1.0,其中包含您测试所需的更改。

我也会考虑在您的设置中更改本地回购协议。xml,这样就不会混合来自两个远程repo的工件。

 类似资料:
  • 问题内容: 我们有许多Java项目,这些项目是使用Jenkins构建的CI。这些都可以部署到我们自己的Nexus服务器上。问题是,我们需要将这些库提供给第三方,但没有源代码。因此,对于每个项目,在Nexus中,我们都有: __为我们的开发人员 发布 存储库(包括已部署的源代码) __我们开发人员的 快照 存储库(包括已部署的源代码) 第三方发布 存储库(仅JAR + POM) (并且很高兴拥有):

  • 我们有许多Java项目,它们是由Jenkins构建的。这些都部署到了我们自己的Nexus服务器上。问题是,我们需要向第三方提供这些库,但没有源代码。因此,对于每个项目,在Nexus中,我们有: 为我们的开发人员发布存储库(包括部署的源代码) 我们开发人员的快照存储库(包括部署的源代码) 第三方发布存储库(仅限JAR POM) (最好有):第三方快照存储库(仅限JAR POM),用于第三方夜间构建

  • 我有一个pom构建了一个jar,并使用rpm maven插件将其打包成rpm。jar既用作独立应用程序,也用作其他应用程序的依赖项,因此我需要将这两个构件部署到本地Nexus。我希望将jar部署到标准的maven releases/maven snapshots存储库中,但我希望将rpm部署到同一个Nexus中的另一个存储库中,该存储库仅用于我们的rpm。 我的专业知识相当基础,但我不知道如何做到

  • 需要根据特定环境从两个远程存储库部署工件。所以我尝试在pom.xml的分发管理中使用配置文件 尝试激活个人资料 我得到以下错误。 部署失败:存储库元素没有指定在POM内部分布管理元素或在-DaltDeploymentRepository=id::布局::url参数 似乎pom无法识别分发管理标签。 但它在没有单一分销管理的配置文件的情况下运行良好。 有谁能给点建议吗? 参考 设置Maven以允许轻

  • 我正在开发一个OSGI包,用于使用PDFBox库解析一个PDF文件。我使用maven构建项目,使用Karaf作为OSGI容器。PDFBox库是OSGI兼容的,所以我想这会很容易。但我就是无法正确地建立部署模型。 在一个传统的web应用程序中,我将构建一个包含所有依赖项的WAR-file,并将其放入一个Servlet容器中,然后将其部署。另一方面,我想要安装osgi包的唯一方法是手工安装。我必须创建

  • 问题内容: 除了无法找到设置“ this”变量的好方法之外,我对Javascript有很好的理解。考虑: 没有最后四行,有没有办法做到这一点?这很烦人……我试图绑定一个匿名函数,我认为它是美丽而聪明的,但无济于事: 显然,将变量传递到myFunction是一个选项……但这不是这个问题的重点。 谢谢。 问题答案: 为JavaScript中的所有函数定义了两种方法,和。函数语法如下: 这些函数的作用是