2017-02-24 6 views
0

EclipseをベースにしたIDEのプロジェクトを作成するためにGradleタスクを作成しています。これには、.project.classpathの両方のファイルを生成する必要があります。この部分は問題ありません。私はでGradle Eclipse Pluginを使用して、変更された設定でeclipseProjecteclipseClasspathに依存しています。しかし、プロジェクト全体は移植可能でなければならない(Gradleのない環境でさえも)ので、クラスパスがキャッシュを参照するため、外部依存関係を定義することはできません。JavaDoc jarsをGradleの依存関係を取得する

// Copies the dependencies to project 'lib' folder 
task copyLibs(type: Copy) { 
    from configurations.libs 
    into "$projectDir/$projectName/lib" 
} 

A:私のプロジェクト'lib'フォルダにこれらの依存関係がキャッシュにダウンロードされます

// Define configurations 
configurations { 
    libs 
} 

// Define repositories 
repositories {                
    mavenCentral() 
} 

// Include dependencies via 'groupID:artifactID:version[:classifier]' 
dependencies { 
    libs 'junit:junit:4.12' 
} 

、および簡単なコピー作業コピー:私は依存関係を定義する主なプロジェクトを使用することによって、この問題を解決しましたサブプロジェクトは現在、単に使用して、依存関係としてそれらのコピーのライブラリを使用しています。

dependencies { 
    compile fileTree(dir: 'lib', include: ['*.jar']) 
} 

サブプロジェクトでは、追加のタスクがパスを相対化するので、私私のプロジェクトを動かすことができ、どこでもgradle buildに電話することができます。これは、クラスパスがどのように見えるかです:

<classpath> 
    <classpathentry path="bin" kind="output"/> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="lib" path="lib\hamcrest-core-1.3.jar"/> 
    <classpathentry kind="lib" path="lib\junit-4.12.jar"/> 
</classpath> 

は、今私は、依存関係のjavadoc -jarsを含めたいです。

eclipse { 
    classpath { 
     downloadJavadoc = true 
     downloadSources = true 
    } 
} 

しかし、あまりにも、今、私のプロジェクトは、依存関係としてファイルを使用するため、Eclipseのプラグインは単にJavadocファイルを要求することはできません:ローカルコピーを使用する前に、私は単にthis Eclipse plugin featureを使用することができます。に:javadocクラシファイアの接尾辞を使用して2番目の依存関係を追加することなく、javadoc-jars のダウンロードをリクエストするにはどうすればよいですか?それがダウンロードされると、私はキャッシュに自分自身をそれを検索することができますし、また、意図した方法で.classpathに追加:場合)、

<classpathentry kind="lib" path="lib\junit-4.12.jar"> <attributes> <attribute name="javadoc_location" value="jar:platform:/path/to/javadoc/junit-4.12-javadoc.jar"/> </attributes> </classpathentry> 

しかし、現時点では

は、javadoc -jarsのみがダウンロードされ、依存関係を:javadocクラシファイアの接尾辞は通常の依存関係と同様に定義されています。またはb)依存関係はコピーされませんが、Eclipseプラグイン(downloadJavadoc = true)でプロジェクトから直接参照されます。

+0

Gradleがインストールされていない環境では、Gradleラッパーを使用できませんでしたか? –

答えて

0

ビルドファイルの構造を変更する必要があると思っても、私はこの特定のケースの解決策を見つけたので、同じ問題につまずく可能性のある他の人に提供したいと思います。

追加の必須JAR(Javadocとソース)を解決できるArtifactResolutionQueryが見つかりました。そのため、これらのJARもコピーするタスクを作成しました。

// Copies the javadoc files to project 'lib/javadoc' folder 
task copyJavadocs(type: Copy) { 
    from { 
     dependencies.createArtifactResolutionQuery() 
      .forComponents(
       configurations.libs.incoming.resolutionResult 
        .allDependencies.collect { it.selected.id } 
      ) 
      .withArtifacts(JvmLibrary, JavadocArtifact) 
      .execute() 
      .resolvedComponents 
      .collectMany { 
       it.artifactResults 
        .collect { it.file.path } 
      } 
    } 
    into "$projectDir/$sunriseProjectName/lib/javadoc" 
} 
関連する問題