【问题标题】:Maven assembly descriptor propertiesMaven 程序集描述符属性
【发布时间】:2015-04-29 12:41:47
【问题描述】:

我想打包两个或多个非常相似的分布,唯一的区别是这些分布中的数据集的路径。

鉴于此路径示例:${project.basedir}/src/config/dataset1

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>dataset1</id>
    <formats>
        <format>zip</format>
    </formats>

    <fileSets>
        <fileSet>
            <directory>${project.basedir}/src/config/dataset1/aaa</directory>
            <outputDirectory>conf/aaa</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/config/dataset1/bbb</directory>
            <outputDirectory>conf/bbb</outputDirectory>
        </fileSet>
    </fileSets>

    <!-- MANY MORE FILESETS... -->

</assembly>

现在我想为不同的数据集使用完全相同的程序集描述符,例如:${project.basedir}/src/config/dataset2

当然,我可以创建两个程序集描述符。但话又说回来,我必须记住在需要时更改多个位置,或者在添加另一个或两个数据集时更糟。

有没有办法解决这个问题,比如创建多个执行并将属性传递给它?或者更好的东西?

编辑: 这个愿望项目将解决一切: https://jira.codehaus.org/browse/MASSEMBLY-445

【问题讨论】:

    标签: java maven maven-assembly-plugin


    【解决方案1】:

    是的,您可以为此使用属性。

    1. 为pom.xml 中的执行之间不同的部件创建属性(使用默认值)。例如:
    <properties>
        <dataset.dir>config/dataset</dataset.dir>
    </properties>
    
    1. 在您的程序集描述符中使用它们,就像任何其他属性一样(例如 ${project.basedir} )

    2. 对于不同的执行,你可以:

      • 使用多个构建配置文件 (Maven profiles) 覆盖属性值;

      • 或直接将值作为 mvn 调用参数传递(如 mvn package -Dprop=val)

    另外,如果您想在任何其他地方使用这些属性,您可以使用其他 maven 插件(例如,maven-resource-plugin)通过任何配置中的占位符填充它们。

    【讨论】:

    • 我知道这种可能性,但这并不是我想要的。配置文件是一种可怜的解决方案,我仍然希望有更好的解决方案..
    • 你可以像mvn install -Dproperty=value这样将任何属性传递给maven,但我仍然认为在一个地方(在pom中)声明所有可能的属性值更好。
    • 不要误会我的意思,在 pom 中声明属性是完全可以的。使用配置文件创建不同的发行版更像是一种 hack 而不是解决方案,而且对我来说滥用配置文件。
    猜你喜欢
    • 2018-07-04
    • 2015-05-30
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多