でアーティファクトをインストールinstall:install-file
できますが、アーティファクトをダウンロードするにはどうすればよいですか?
例えば:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
でアーティファクトをインストールinstall:install-file
できますが、アーティファクトをダウンロードするにはどうすればよいですか?
例えば:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
回答:
バージョン2.1以降、素晴らしい目標を持つmaven依存プラグインを使用できますdependency:get
。pomは必要ありません。すべてがコマンドラインで行われます。
dependency:get
目標を確実に見つけるには、バージョン2.1を使用するようにmavenに明示的に指示する必要があります。つまり、バージョンを含むプラグインの完全修飾名を使用する必要があります。
mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
-DrepoUrl=url \
-Dartifact=groupId:artifactId:version
更新: Mavenの古いバージョン(2.1より前)ではdependency:get
、Mavenのコピーに特定のバージョンのプラグインを使用するように強制することにより、(完全修飾名とバージョンを使用せずに)正常に実行できます。
これは次のように実行できます。
1. ファイルの<settings>
要素内に次の行を追加し~/.m2/settings.xml
ます:
<usePluginRegistry>true</usePluginRegistry>
2. ~/.m2/plugin-registry.xml
次の内容のファイルを追加します。
<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<useVersion>2.1</useVersion>
<rejectedVersions/>
</plugin>
</plugins>
</pluginRegistry>
しかし、これはmaven 2.1 / 2.2ではもう機能しないようです。実際、Introduction to the Plugin Registryによると、の機能はplugin-registry.xml
(移植性のために)再設計されており、プラグインレジストリは現在、Maven 2内で半休止状態になっています。だから私は今のところ長い名前を使用する必要があると思います(pomなしでプラグインを使用する場合、これは背後にある考えですdependency:get
)。
:jar:sources
にアーティファクト、参照stackoverflow.com/a/31109185/537554
mvn dependency:get -Dartifact=group-id:artefact-id:version
Maven依存プラグインの最新バージョン(2.8)では、Mavenセントラルリポジトリからアーティファクトをダウンロードするのは次のように簡単です。
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]
ここでgroupId:artifactId:version
、等はMaven座標です
Maven 2.0.9、Maven 2.2.1、およびMaven 3.0.4でテストした例:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources
(最初に素晴らしい答えを提供してくれたPascal Thiventに感謝します。コメントに収まらず、編集するには広すぎるため、別の答えを追加します。)
jar:sources
意味/ ことを説明できますか?なぜ「jar」を指定する必要があるのですか?「ソース」は、アーティファクトに必要な追加の依存関係をダウンロードすることを意味しますか?
sources
Javaソースのみを含むJARファイル3. javadoc
APIドキュメントのみを含むJARファイル 参照:Mavenのデフォルトのアーティファクトハンドラ。
[:classifier]
ダウンロードしたいassemlbyプラグインで作成したzipファイルがある場合、正しく使用する方法を明確にしていただきありがとうございます。
最後にMaven 3.1.1を含む「component.jar」と呼ばれるアーティファクトの最新バージョンをダウンロードするために私が機能したのは次のとおりです(他の提案は、主にMavenバージョンの変更が原因であると考えて、失敗しました)
これは実際にファイルをダウンロードしてローカルの作業ディレクトリにコピーします
bashから:
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
-DrepoUrl
、とにかくそれは私のポンから暗示されていたと思います。また、私は使用しませんでした-Ddest
私は実際にようやった、正規にダウンロードし、それをしたい.m2
ディレクトリ。
dest
パラメータは廃止されました、とのinvokationに置き換えることができcopy
た後にget
そのような:mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(作業ディレクトリにjarファイルを置くこの場合)。
Goal requires a project to execute but there is no POM in this directory
。
mvn dependency:copy
(dependency:get
最初なしで)ただ走ることができます。
アーティファクトバイナリを取得する方法に関して、Pascal Thiventの答えはそれですが、アーティファクトソースjarも取得するには、以下を使用できます。
mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources
例えば
mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources
これは、artifact
パラメータが実際にで構成されているため機能しますgroupId:artifactId:version[:packaging][:classifier]
。ただ、パッケージと分類器はオプションです。
パッケージ化し、として分類器、Mavenの依存関係のプラグインは、我々はソースの瓶、ないアーティファクトジャーのために求めている理解しています。jar
sources
残念ながら、現時点ではソースのjarファイルを推移的にダウンロードすることはできませんdownloadSources
。
プラグイン構成セクションで定義されたアーティファクトのリストを取得して、指定された場所にコピーするdependency:copy(http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html)を使用できます。、必要に応じて、名前を変更するか、バージョンを削除します。この目標は、リモートリポジトリのアーティファクトがローカルリポジトリまたはリアクタのいずれにも存在しない場合に、それらを解決できます。
プラグインのすべてのプロパティをMaven CLIで使用できるわけではありません。「ユーザープロパティ:」プロパティが定義されているプロパティを指定できます。以下の例では、junitを一時フォルダーにダウンロードし、jarファイルからバージョンを削除しています。
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true
ここで、artifact = junit:junit:4.11はMaven座標です。そして、artifcatをgroupId:artifactId:version [:packaging [:classifier]]として指定します
(最初にhttps://stackoverflow.com/a/18632876/2509415を提供してくれたPascal Thiventに感謝します。別の回答を追加しています)
mvnなしで最新のmavenアーティファクトをダウンロードする1つのライナー:
curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"
公式ドキュメントの使い方:
https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency:get
私の場合、以下の答えを見てください:
mvn dependency:get -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false
mvn dependency:copy -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false -DoutputDirectory=$6
#mvn dependency:get -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false
#mvn dependency:copy -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false -DoutputDirectory=.
コマンド「mvn dependency:get」を使用して特定の属性をダウンロードし、コマンド「mvn dependency:copy」を使用してダウンロードしたアーティファクトを宛先ディレクトリ「-DoutputDirectory」にコピーします
以下は、Maven 3.6を使用してASM-7を取得する例です。
mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar
または、ここからjarをダウンロードできます:https : //search.maven.org/search?q=g : org.ow2.asm%20AND%20a : asmそして、
mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar