gpt4 book ai didi

maven - 如何在 Maven 中使用平台架构来确定依赖关系?

转载 作者:行者123 更新时间:2023-12-03 13:30:08 25 4
gpt4 key购买 nike

正如问题所述,是否有一种很好的方法可以在构建 maven Artifact 时使用基于平台架构的依赖项。我知道配置文件以及如何使用它们。出于这个特殊目的,我不想将它们合并到我的构建中。

这个问题可以详细描述如下:

  • 多模块maven项目
  • 持续集成和项目人员使用均匀分布的平台架构
  • 对 native 系统库的依赖

  • 我不想在设置中使用的解决方案:
  • 没有依赖冗余
  • 没有 Maven 配置文件 (或至少由平台架构自动选择的 Maven 配置文件)

  • 举个例子:

    个人1
  • (使用 linux i686)构建项目
  • x86 库捆绑到每个子项目中,并且正在构建生成的 Artifact

  • 个人2
  • (使用win32)构建项目
  • 32 位库如上捆绑

  • 持续整合
  • 像linux amd64上的生产环境一样运行
  • 集成amd64库

  • 编辑个人资料

    我知道配置文件是执行此操作的一种解决方案。但是我想要实现的是,您从一些随机源版本控制中 checkout 您的项目,并使用开箱即用的本地库构建项目而不做任何事情(只要平台满足配置的要求)。

    我不想配置这些配置文件设置,也不想显式运行特定目标。如果配置文件有这样的东西,我希望看到一个自动确定平台架构并运行目标的示例。如果有一个没有配置文件,我会更喜欢它,因为它不那么复杂,同时具有不同的现有配置文件组合(包括测试和其他用例)。

    仅拥有个人资料对我来说有点臃肿,需要手动操作。

    我希望有人有一个简洁的建议,因为我不知何故坚持了这一点。

    最佳答案

    如果没有配置文件,我不知道有任何方法可以做到这一点。这是将配置文件添加到 maven 的主要用例。您可以使用以下方法执行此操作:

    <profiles>
    <profile>
    <activation>
    <os>
    <name>Windows XP</name>
    <family>Windows</family>
    <arch>x86</arch>
    </os>
    </activation>
    ...
    </profile>
    <profile>
    <activation>
    <os>
    <family>Linux</family>
    <arch>x64</arch>
    </os>
    </activation>
    ...
    </profile>
    <profile>
    <activation>
    <property>
    <name>integration-test</name>
    </property>
    </activation>
    ...
    </profile>
    </profiles>

    然后,当有人 checkout 一个项目并在 Linux x64 机器上构建它时,他们将自动获取 Linux x64 配置文件下的所有内容。如果他们还提供了属性 -Dintegration-test在命令行上,他们也会激活集成测试配置文件。您可以拥有任意数量的事件配置文件,这些配置文件被组合起来为构建创建有效的 POM。这些配置文件可以在您处理的所有项目的共享父 POM 中定义,因此开发人员不必更改其 settings.xml 文件。

    要获取有关激活配置文件的更多信息,请查看: http://maven.apache.org/guides/introduction/introduction-to-profiles.html .

    关于maven - 如何在 Maven 中使用平台架构来确定依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6762271/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com