https://github.com/google/guice/issues/846に 1 時間以上頭を悩ませた後、guice-4.0-beta5.jar と sisu-guice という 2 つの異なる jar によって提供される Guice ライブラリがあることに気付きました。 -3.1.3-no_aop.jar。
ガァァァ…
2 つ目は Guava 18 と互換性がなく、読み込まれると、Guava の使用時にアクセス エラーが発生します。
によって暗黙的に追加されたものを除いて、依存関係のない SBT プラグインを作成していますsbtPlugin := true
。
依存関係ツリー (私のプラグインはcom.github.pauldraper.playclosure:sbt-plugin
):
> what-depends-on org.sonatype.sisu sisu-guice 3.1.3
[info] org.sonatype.sisu:sisu-guice:3.1.3
[info] +-org.eclipse.sisu:org.eclipse.sisu.plexus:0.0.0.M5
[info] +-org.apache.maven:maven-core:3.2.2
[info] | +-org.vafer:jdeb:1.3
[info] | +-com.typesafe.sbt:sbt-native-packager:0.7.4
[info] | +-com.typesafe.play:sbt-plugin:2.3.7
[info] | +-com.github.pauldraper.playclosure:sbt-plugin:0.0-SNAPSHOT
[info] | | +-default:project_2.10:0.1-SNAPSHOT [S]
[info] | |
[info] | +-default:project_2.10:0.1-SNAPSHOT [S]
[info] |
[info] +-org.apache.maven:maven-plugin-api:3.2.2
[info] +-org.apache.maven:maven-core:3.2.2
[info] | +-org.vafer:jdeb:1.3
[info] | +-com.typesafe.sbt:sbt-native-packager:0.7.4
[info] | +-com.typesafe.play:sbt-plugin:2.3.7
[info] | +-com.github.pauldraper.playclosure:sbt-plugin:0.0-SNAPSHOT
[info] | | +-default:project_2.10:0.1-SNAPSHOT [S]
[info] | |
[info] | +-default:project_2.10:0.1-SNAPSHOT [S]
[info] |
[info] +-org.vafer:jdeb:1.3
[info] +-com.typesafe.sbt:sbt-native-packager:0.7.4
[info] +-com.typesafe.play:sbt-plugin:2.3.7
[info] +-com.github.pauldraper.playclosure:sbt-plugin:0.0-SNAPSHOT
[info] | +-default:project_2.10:0.1-SNAPSHOT [S]
[info] |
[info] +-default:project_2.10:0.1-SNAPSHOT [S]
[info]
したがって、この恐ろしい依存関係は、 を通じて推移的に発生しsbt-plugin
ます。
理想的には、プラグインのエンド ユーザーが除外をいじる必要はありません。
この依存関係を除外し、この問題を引き起こさないようにプラグインを作成するにはどうすればよいですか?