我是否可以使用命令或Maven插件从命令行向POM添加依赖项?
例如,我想输入类似的内容:
mvn lazy:add-dependency -DgroupId=com.mycompany -DartifactId=derp -Dversion=1.0
并让它修改当前目录中POM的依赖项部分:
<dependencies>
... other dependencies ...
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>derp</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
添加上述XML的外部命令也可以,但我更喜欢不需要我编写XSL样式表的命令。
答案 0 :(得分:1)
不确定你是否解决过这个问题,但我过去曾用xsltproc做过类似的事情(我知道你说不要用一个,但我从来没有找到另一种方法)。
function merge_xml ()
{
TEMP_XML1="some-temp-file1.xml"
TEMP_XML2="some-temp-file2.xml"
cat > $TEMP_XML1
cp $1 $TEMP_XML2
echo "Merging XML stream from $1 into $2" >&2
xsltproc --stringparam with "$TEMP_XML1" merge.xslt "$TEMP_XML2" | tidy -xml -indent -quiet -wrap 500 -output $2
}
可以在http://www2.informatik.hu-berlin.de/~obecker/XSLT/merge/merge.xslt 找到merge.xslt
然后调用Bash函数:
merge_xml $PROJECT_ROOT/content/pom.xml $PROJECT_ROOT/content/pom.xml << EOF
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>my-artifact</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>jar</classifier>
</dependency>
</dependencies>
</project>
EOF
答案 1 :(得分:0)
我不知道现有的插件会执行此操作,但implement your own Maven plugin leveraging Ant和XMLTask可能相当简单。
答案 2 :(得分:0)
根据安德鲁的评论:
使用sed的示例:
sed 's/<dependencies>/<dependencies>\r\n<!--ghost-->\r\n<dependency>\r\n<groupId>org.ghost4j<\/groupId>\r\n<artifactId>ghost4j<\/artifactId>\r\n<version>0.5.0<\/version>\r\n<\/dependency>\r\n<!--ghost-->/g' pom.xml > pom2.xml
将dependencies标记替换为依赖项标记,后跟新依赖项(在列表中首先插入新的依赖项。
使用新依赖项创建新文件pom2.xml(可以使用以下命令更改此文件:pom.xml&gt; pom.xml