簡體   English   中英

有沒有辦法從命令行向Maven POM添加依賴項?

[英]Is there a way to add a dependency to a Maven POM from the command line?

是否有命令或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樣式表的命令。

不確定你是否解決了這個問題,但我過去曾用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
}

merge.xslt可以在這里找到http://www2.informatik.hu-berlin.de/~obecker/XSLT/merge/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

我不知道現有的插件可以做到這一點,但實現自己的Maven插件可以相當簡單, 利用AntXMLTask

繼Andrew的評論之后:

使用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> pom.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM