私は本質的に次のことを達成する必要があります:
provided
としてマークされた依存関係を除いて、ライブラリの依存関係をメインプロジェクトJARを含むローカルフォルダーにコピーします。第二部が終わらないようです。以下で行うよりも良い方法はありますか?私は基本的にこれらのJARをサーバー上のlibディレクトリにデプロイしています。残念ながら、以下のコードにはprovided
を含むすべてのJARが含まれていますが、プロジェクト出力JARは含まれていません。これに別のプラグインを使用する必要がありますか?
<?xml version="1.0"?>
<project>
...
<dependencies>
<dependency>
<groupId>com.provided</groupId>
<artifactId>provided-lib</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>/hello</outputDirectory>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
プラグインが提供された依存関係を収集するのを防ぐために、@ Raghuramソリューション(その場合は+1)を使用できます。また、testスコープの依存関係をスキップしようとしましたが、 issue は、それほど単純には実行できないことがわかりました-astestは、プラグインのセマンティクスで「everything」を意味します。
したがって、providedおよびtestスコープを除外するソリューションはincludeScopeランタイム。
<includeScope>runtime</includeScope>
依存関係を収集した後、 maven-antrun-plugin を使用してプロジェクトjarをターゲットディレクトリにコピーできます。例:
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${Java.io.tmpdir}/test</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy
file="${build.directory}/${project.artifactId}-${project.version}.jar"
todir="${Java.io.tmpdir}/test" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
私は他の解決策を知りません-新しいpom-dist.xml(多分<packaging>pom</packaging>
)を作成する以外に、あなたへの依存関係を保持しますライブラリを作成し、すべての推移的な依存関係の排他的テスト/提供されたスコープを収集します。まったく新しいプロジェクトを提供したくない場合は、mvn -f pom-dist.xml package
を使用してこれを実行できます。
文書化されているように ここ 、excludeScope
パラメータを設定してprovided
スコープの依存関係を除外してみることができます。
<excludeScope>provided</excludeScope>
現在のプロジェクトjarを除くプラグインについては、これは仕様によるものだと思います。
このジョブを実行するために、別のMavenプロジェクトを作成できます。
私の2セントを追加します。
<excludeScope>provided</excludeScope>
を実行に入れることは機能しませんでした。
提供されたjarを除外するには、要素を実行の外に置きます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<excludeScope>provided</excludeScope>
</configuration>
</plugin>
コマンド:mvn dependency:copy-dependencies
。
瓶はtarget/dependency
にコピーされます。