Bash 从 Maven 获取文件集的 outputDirectory 标签值的脚本 assembly.xml
Bash script to get the outputDirectory tag value of a fileset from Maven assembly.xml
我需要一个 Bash 脚本来从 Maven assembly.xml 的文件集下获取 outputDirectory 标签的值,这样我就可以处理创建的文件。
我指的不是开始标签和结束标签之间的实际字符集,而是标签为空时的默认值或变量的值(如果该标签中有的话)。
我用不同的 fileSet 标签创建了一个程序集 xml,只是为了显示我需要处理的各种情况。我想要一个脚本,它将给我 Maven 看到的输出目录的路径
<assembly>
<id>${deploy.name}</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<outputDirectory></outputDirectory>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<outputDirectory>/examples</outputDirectory>
</fileSet>
<fileSet>
<outputDirectory>${Common.shared.location}</outputDirectory>
</fileSet>
</fileSets>
</assembly>
更新:
Maven 将创建的文件保存在输出目录中。
outputDirectory 的基本目录默认值为 ${project.build.directory} 并且这里有很好的解释 Maven: specify the outputDirectory only for packaging a jar?
我在脚本中有一个变量,我希望它具有 Maven 保存输出文件的文件夹的路径。在下面的每个示例 outputDirectory 标记之后,有一行我认为应该是我想要的变量的值。
${project.build.directory}
的价值
/
我不确定
/例子
${project.build.directory}/示例的值
${Common.shared.location}
取决于 ${Common.shared.location} 变量的值
谢谢
您可以将 sed
与正则表达式一起使用:
for match in $(sed -n 's|<outputDirectory>\(.*\)</outputDirectory>||p' assembly.xml) ; do
echo "$match"
done
解释:
sed 's|...|...|p'
打印正则表达式 <outputDirectory>\(.*\)</outputDirectory>
的匹配项,匹配两个 <outputDirectory>
标签之间的任何文本。 for match in ...
迭代匹配并将它们打印到标准输出。
我需要一个 Bash 脚本来从 Maven assembly.xml 的文件集下获取 outputDirectory 标签的值,这样我就可以处理创建的文件。
我指的不是开始标签和结束标签之间的实际字符集,而是标签为空时的默认值或变量的值(如果该标签中有的话)。
我用不同的 fileSet 标签创建了一个程序集 xml,只是为了显示我需要处理的各种情况。我想要一个脚本,它将给我 Maven 看到的输出目录的路径
<assembly>
<id>${deploy.name}</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<outputDirectory></outputDirectory>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<outputDirectory>/examples</outputDirectory>
</fileSet>
<fileSet>
<outputDirectory>${Common.shared.location}</outputDirectory>
</fileSet>
</fileSets>
</assembly>
更新: Maven 将创建的文件保存在输出目录中。 outputDirectory 的基本目录默认值为 ${project.build.directory} 并且这里有很好的解释 Maven: specify the outputDirectory only for packaging a jar?
我在脚本中有一个变量,我希望它具有 Maven 保存输出文件的文件夹的路径。在下面的每个示例 outputDirectory 标记之后,有一行我认为应该是我想要的变量的值。
${project.build.directory}
的价值/ 我不确定
/例子 ${project.build.directory}/示例的值
${Common.shared.location} 取决于 ${Common.shared.location} 变量的值
谢谢
您可以将 sed
与正则表达式一起使用:
for match in $(sed -n 's|<outputDirectory>\(.*\)</outputDirectory>||p' assembly.xml) ; do
echo "$match"
done
解释:
sed 's|...|...|p'
打印正则表达式 <outputDirectory>\(.*\)</outputDirectory>
的匹配项,匹配两个 <outputDirectory>
标签之间的任何文本。 for match in ...
迭代匹配并将它们打印到标准输出。