如何在Maven中使用平台架构来确定依赖关系?
正如问题所述,在构建maven构件时,是否有一种很好的方法可以使用基于平台体系结构的依赖关系。我知道个人资料以及如何使用它们。为了这个特殊的目的,我不想将它们合并到我的构建中 具体问题可描述如下:如何在Maven中使用平台架构来确定依赖关系?,maven,cross-platform,Maven,Cross Platform,正如问题所述,在构建maven构件时,是否有一种很好的方法可以使用基于平台体系结构的依赖关系。我知道个人资料以及如何使用它们。为了这个特殊的目的,我不想将它们合并到我的构建中 具体问题可描述如下: 多模块maven项目 持续集成,项目人员使用均匀分布的平台架构 对本机系统库的依赖关系 我不想在设置中使用的解决方案: 无依赖冗余 无maven配置文件(或至少由平台架构自动选择的maven配置文件) 例如: 人1 (使用linux i686)构建项目 x86库被捆绑到每个子项目中,生成的人
- 多模块maven项目
- 持续集成,项目人员使用均匀分布的平台架构
- 对本机系统库的依赖关系
- 无依赖冗余
- 无maven配置文件(或至少由平台架构自动选择的maven配置文件)
- (使用linux i686)构建项目
- x86库被捆绑到每个子项目中,生成的人工制品正在构建中
- (使用win32)生成项目
- 32位库的绑定如上所述
- 与linux amd64上的生产环境一样运行
- 集成amd64库
我希望有人能给我一个简洁的建议,因为我不知怎的被困在这个问题上了。使用个人资料有什么问题?它们正是为这种情况而制造的。您可以按操作系统/平台指定配置文件操作并添加依赖项。完全透明
另一种方法是将核心库移动到一个单独的模块,并为每个平台提供一个模块。没有配置文件,我不知道有什么方法可以做到这一点。这是将概要文件添加到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>
. Im使用当前配置文件对测试集进行分组。如果我发明了一个不同的逻辑子集组,我需要配置它们的每个组合,因此我不想这样。corelib是一种手动方式,我想知道如何自动完成。我想你误解了配置文件。您可以拥有您的测试集配置文件,然后拥有另一组更改依赖关系的配置文件。配置文件上的
组决定何时使用,多个配置文件可以同时激活。我支持Ryan的回答。但要小心,太多的配置文件会使构建变得不可预测和不可管理。你应该考虑测试模块而不是测试配置文件。我知道多个配置文件,也知道同时激活多个配置文件,但这不会改变各种组合带来的复杂性。不幸的是,它并没有解决我的自动化问题。我编辑我的帖子是为了让它更清楚。我很难接受这个想法:Maven已经决定了你怎么做。配置文件就是这样做的。因此,必须使用配置文件来执行此操作。Maven不灵活——它受到约束。这就是它的优势。linux64
在我的情况下不起作用(64位Linux 3.16.0上的8u25)<代码>Linuxamd64
未执行。不知道如何更一般地匹配。在Red Hat上可能是x86\u 64
。