0

プロジェクトのPOMで次の依存関係を指定しています。

 <dependency>
  <groupId>org.jboss.client</groupId>
  <artifactId>jbossall-client</artifactId>
  <scope>compile</scope>
 </dependency>

私のプロジェクト自体は、別のPOMの子である必要があります。そしてその中で、以下が定義されています:

<dependency>
   <groupId>org.jboss.client</groupId>
   <artifactId>jbossall-client</artifactId>
   <version>4.2.3.GA</version>
   <scope>provided</scope>
   <type>jar</type>
</dependency>

jbossall-client.jarプログラムをアセンブリすると、アセンブリに含まれていないため、親POMの「提供された」スコープがプロジェクトのスコープをオーバーライドしているように見えます。私には非論理的に思えますが、おそらくこの機能がここで有効になっているのでしょう。

親POMに触れることなく、依存関係をアセンブリに含める方法を知っていますか?


編集:(mvn dependency-tree更新されました!) の出力:

[dependency:tree]
com.myproject:myproject:jar:0.0.1-SNAPSHOT
+- com.myproject-commons:jar:1.0-SNAPSHOT:compile
|  +- commons-logging:commons-logging:jar:1.0.4:compile
|  +- log4j:log4j:jar:1.2.14:compile
|  +- sv.seucc:seucc-unicode:jar:1.0.1.5:compile
|  +- commons-lang:commons-lang:jar:2.2:compile
|  +- com.thoughtworks.xstream:xstream:jar:1.2.1:compile
|  \- xpp3:xpp3_min:jar:1.1.3.4.O:compile
+- com.myproject-interfaces2:jar:1.0-SNAPSHOT:compile
|  \- com.myproject-service-commons:jar:1.0-SNAPSHOT:compile
+- org.springframework:spring:jar:2.5.6:compile
+- commons-io:commons-io:jar:1.3.1:compile
+- com.myproject-modules:ejb:1.0-SNAPSHOT:compile
\- org.jboss.client:jbossall-client:jar:4.2.3.GA:compile

編集2:ここで私のアセンブリXMLの依存部分。

 <dependencySets>
  <dependencySet>
   <outputDirectory>lib</outputDirectory>
  </dependencySet>
 </dependencySets>

編集3:取得したアセンブリのlibフォルダー内のファイルは次のとおりです。

commons-io-1.3.1.jar
commons-lang-2.2.jar
commons-logging-1.0.4.jar
log4j-1.2.14.jar
seucc-unicode-1.0.1.5.jar
spring-2.5.6.jar
xpp3_min-1.1.3.4.O.jar
xstream-1.2.1.jar
myproject-commons-1.0-SNAPSHOT.jar
myproject-modules-1.0-SNAPSHOT.jar
myproject-service-commons-1.0-SNAPSHOT.jar
myproject-interfaces2-1.0-SNAPSHOT.jar
myproject-0.0.1-SNAPSHOT.jar

編集4:この質問への回答については、正解の最後のコメントを参照してください。

4

2 に答える 2

1

どちらの依存関係も同じではないgroupIdため、ここでは何もオーバーライドされず、別個のアーティファクトとして扱われます。しかし、子 pom でどのように機能するのだろうか (にjbossall-clientはバージョンがないため)。セクションはありdependencyManagementますか?

とにかく、この種の問題を「デバッグ」するmvn dependency:treeには、子プロジェクトで使用します (さらにヘルプが必要な場合は、出力を投稿してください)。


更新:上記は最初の質問に対する私の回答であり、質問の現在の状態を反映していません。

明確にするために、最終的な解決策の鍵は、アセンブリ記述子の要素でa <scope>compile</scope>(既定値はruntime)を宣言することでした。dependencySet詳細については、コメントを参照してください。

こちらもご覧ください

于 2010-06-09T10:00:46.177 に答える
0

同じ問題が発生し、提供されたスコープの2番目のdependencySetを追加することで解決しましたが、これは、アセンブリプラグインのバージョン2.2.1にアップグレードした場合にのみ機能しました。

于 2011-03-28T14:02:42.927 に答える