2016-09-19 23 views
1

コマンドラインから特定のMavenプラグインを実行する必要があります。例えば、私はJavaプロジェクトをテストするためのMavenプラグインシュアの特定のバージョンを実行し、次に:コマンドラインから特定のプラグインへの特定のパスを指定してmavenを実行してください

mvn org.apache.maven.plugins:maven-surefire-plugin:2.19-SNAPSHOT:test 

しかし、上記のデフォルトのMavenリポジトリパスで確実なプラグイン2.19を見つけることを前提としています。さて、私の質問は、プラグインを特定のパス(Mavenのデフォルトパスではなく)で使用したいのですが、コマンドラインを使ってどうすればいいですか?次の呼び出し

mvn groupId:artifactId:version:goal 

のために、私はその目標

を実行するためにカスタマイズされたパスを指定するどこかに必要があるだろう、

mvn /path/to/some/jar/version/org.apache.maven.plugins:maven-surefire-plugin:2.19-SNAPSHOT:test 

以上を一般的に:私はpom.xmlを変更することなく、次のようなものを期待します

mvn /some/path/to/groupId:artifactId:version:goal 

一方、これがMavenでもサポートされていないかどうか教えてください。

答えて

1

これは機能しません。 Mavenは、ローカルのリポジトリ内で常にアーチファクトを検索します。また、ローカルのリポジトリで見つけられない場合は、構成済みのリモートリポジトリからダウンロードしようとします。

このように、プラグインへのパスは指定しません。そのプラグインがインストールされているローカルリポジトリへのパスを指定します。このローカルリポジトリには、起動しようとしているプラ​​グインのすべての依存関係がインストールされます。つまり、どこにでも座っているプラ​​グインにJARを置くことはできません。正しいリポジトリツリーディレクトリの中に配置する必要があります。ローカルリポジトリ/my/local/repoの場合、プラグインgroupId:artifactId:versionの成果物はにあり、artifactId-version.jar(および.pom)という名前にする必要があります。同様に、そのプラグインの依存関係の場所は、そのディレクトリ構造に従わなければなりません。

デフォルトでは、ローカルリポジトリは~/.m2/repositoryにあります。 mvn -Dmaven.repo.local=/path/to/local/repo groupId:artifactId:version:goalと例えば、

  1. コマンドラインでmaven.repo.localシステムプロパティを指定する;:しかし、あなたがでていること変更することができます
  2. カスタムsettings.xmlを使用し、Mavenにwith the -s command line optionを使用するように指示します。

    <settings> 
        <localRepository>/path/to/local/repo</localRepository> 
    </settings> 
    

    をしてmvn -s /path/to/settings.xml groupId:artifactId:version:goal

+0

確認済みで使用すること:それは含まれています。これは質問に答えます。ありがとう! – Bruce

関連する問題