2016-12-22 6 views
2

現在、プロジェクトのビルドシステムをANTからgradleに移行しようとしています。だから私はかなり私のプロジェクトの機能は、XMLファイルで構成されたジャーを動的にロードするプラグインのメカニズムが機能している。各プラグインはそれ自身のサブプロジェクトにあります。私は私のメインのプロジェクトの実行タスクで、それを使用可能にするために、ビルドフォルダ内の正しいlibフォルダと、各エントリの前に付けるためにXSL変換を追加特定のライブラリのフィルタグラデル構成

<?xml version="1.0" encoding="UTF-8"?> 
<implementation ...> 
    <repository>text</repository> 
    <classpath>library1.jar</classpath> 
    <classpath>library2.jar</classpath> 
    ... 
</implementation> 

次のようにXML設定のエントリが見えます。

これは既にプロジェクト内で作成されたライブラリで問題なく動作します。しかし、それらのうちのいくつかは第三者図書館、例えばprotobufに依存している。

今のところ、私は参照されたすべてのjarをlibフォルダにコピーすることでこれを解決しました。私のbuild.gradleは、次のようになります。

ただし、メインプロジェクトから継承したライブラリを含むすべてのライブラリがlibフォルダにコピーされます。私は実際に必要以上に。

このサブプロジェクトで定義されたライブラリにライブラリをフィルタリングするにはどうすればよいですか、または少なくともコピーしたいものを手動でフィルタリングすることはできますか?

答えて

0

あなたは自分のCopyタスク

task copyReferencedLibraries(type: Copy) { 
    into "$buildDir/libs" 
    from(configurations.compile) { 
     exclude 'some.jar', 'some-other.jar' 
     include 'some-required.jar', 'some-other-required.jar' 
    } 
} 

参考にフィルタリングすることができます:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html

ちょうどあなたが第二または第三層の依存性を排除しないように注意してください(つまり、あなたの使用してjarファイルで必要なjar) 。そうすれば、コンパイルエラーは発生しません。欠落している依存関係に触れるコードが実行されると、ランタイムエラーが発生します。

関連する問題