veh*_*mar 6 java maven maven-assembly-plugin
我想打包两个或更多非常相似的发行版,唯一的区别是数据集的路径将在这些发行版中.
给出了路径的这个例子:$ {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>
Run Code Online (Sandbox Code Playgroud)
现在我想要不同数据集的完全相同的汇编描述符,例如:$ {project.basedir}/src/config/dataset2
当然,我可以创建两个程序集描述符.但是,我必须记住在需要时更改多个位置,或者在添加另一个或两个数据集时更糟.
有没有办法解决这个问题,比如创建多个执行并将属性传递给它?还是更好的东西?
编辑: 这个愿望项目将解决所有问题:https: //jira.codehaus.org/browse/MASSEMBLY-445
是的,您可以为此使用属性。
pom.xml. 例如:Run Code Online (Sandbox Code Playgroud)<properties> <dataset.dir>config/dataset</dataset.dir> </properties>
就像任何其他属性一样在程序集描述符中使用它们(例如${project.basedir})
对于不同的执行,您可以:
使用多个构建配置文件(Maven 配置文件)来覆盖属性值;
或直接将值作为 mvn 调用参数传递(如mvn package -Dprop=val)
另外,如果您想在任何其他地方使用这些属性,您可以使用其他 Maven 插件(例如,maven-resource-plugin)通过任何配置中的占位符填充它们。