我有一个复杂的项目,其中有许多目录有POM文件,但只有一些是特定父项目的子模块(可能是传递).
显然,Maven知道相关文件的列表,因为它解析所有<module>
标签以找到它们.但是,我只看到<name>
[INFO]注释中的s 列表,而不是这些模块的路径.
有没有办法让Maven输出所有POM文件的列表,这些文件提供对作为给定项目的reactor构建的一部分的项目的引用?
Bon*_*rte 23
这很简单,但它只从根(或父)模块获取artifactId:
mvn --also-make dependency:tree | grep maven-dependency-plugin | awk '{ print $(NF-1) }'
如果你想要目录
mvn -q --also-make exec:exec -Dexec.executable="pwd"
his*_*ner 11
以下脚本打印所有子模块的 artifactId:
mvn -Dexec.executable='echo' -Dexec.args='${project.artifactId}' exec:exec -q
示例输出:
build-tools
aws-sdk-java-pom
core
annotations
utils
http-client-spi
http-client-tests
http-clients
apache-client
test-utils
sdk-core
...
Run Code Online (Sandbox Code Playgroud)
mvn help:evaluate -Dexpression=project.modules
mvn help:evaluate -Dexpression=project.modules[0]
mvn help:evaluate -Dexpression=project.modules[1]
IFS=$'\n'
modules=($(mvn help:evaluate -Dexpression=project.modules | grep -v "^\[" | grep -v "<\/*strings>" | sed 's/<\/*string>//g' | sed 's/[[:space:]]//'))
for module in "${modules[@]}"
do
echo "$module"
done
Run Code Online (Sandbox Code Playgroud)
下面是在 Maven 之外的 Linux 上使用 strace 执行此操作的方法。
$ strace -o opens.txt -f -e open mvn dependency:tree > /dev/null
$ perl -lne 'print $1 if /"(.*pom\.xml)"/' opens.txt
Run Code Online (Sandbox Code Playgroud)
第一行在 strace 下运行,要求 strace 将所有对系统调用的调用mvn dependency:tree
输出到文件中,跟随任何分支(因为 Java 是线程化的)。该文件看起来像:opens.txt
open(2)
9690 open("/etc/ld.so.cache", O_RDONLY) = 3
9690 open("/lib/libncurses.so.5", O_RDONLY) = 3
9690 open("/lib/libdl.so.2", O_RDONLY) = 3
Run Code Online (Sandbox Code Playgroud)
第二行要求 Perl 打印引号内恰好以 pom.xml 结尾的任何文本。(该-l
标志处理打印换行符,将-n
代码单引号包装在一个循环中,该循环仅读取命令行上的任何文件,并且-e
处理脚本本身,它使用正则表达式来查找要打开的有趣调用。)
如果有一种 Maven 原生的方式来做到这一点那就太好了:-)
小智 5
我发现的解决方案非常简单:
mvn -B -f "$pom_file" org.codehaus.mojo:exec-maven-plugin:1.4.0:exec \
-Dexec.executable=/usr/bin/echo \
-Dexec.args='${basedir}/pom.xml'| \
grep -v '\['
Run Code Online (Sandbox Code Playgroud)
这有点棘手,因为需要 grep 出 [INFO|WARNING|ERROR] 行并使其可用于脚本编写,但因为您可以在那里放置任何表达式,所以节省了我很多时间。
归档时间: |
|
查看次数: |
17681 次 |
最近记录: |