我想打包两个或更多非常相似的发行版,唯一的区别是数据集的路径将在这些发行版中。
给出路径的这个例子: $ {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
答案 0 :(得分:4)
是的,您可以使用此属性。
pom.xml
中执行的不同部分创建属性(使用默认值)。 E.g:<properties> <dataset.dir>config/dataset</dataset.dir> </properties>
在汇编描述符中使用它们就像任何其他属性一样(例如${project.basedir}
)
对于不同的执行,你可以:
使用多个构建配置文件(Maven profiles),其中覆盖属性值;
或直接将值作为mvn调用参数传递(如mvn package -Dprop=val
)
此外,如果要在任何其他位置使用这些属性,可以使用其他maven插件(例如,maven-resource-plugin)在任何配置中通过占位符填充它们。