3

gen多くのコンパイラ警告を含む生成されたソースのように、ビルドに追加のJavaソースセットがあり、-と呼ばれます。このgradle eclipseタスクは、このセットのソース ディレクトリを Eclipse ソース フォルダーとして構成するため、見たくない多くの警告が表示されます。もう 1 つの理由は、生成されたソース コードを変更してはならないということです。通常のコードだと思って、誰かが誤って編集してしまうのは望ましくありません。

以下は機能しますが、既存の構成を で上書きする場合のみgradle eclipseです。

eclipse.classpath.file {
    whenMerged { classpath ->
        classpath.entries.removeAll { 
            entry -> entry.kind == 'src' && entry.path == 'src/gen/java'
        }
    }
}

ただし、構成が消去されている場合は機能しません -gradle cleanEclipse eclipseこれは、プロジェクトを最初にEclipseにインポートしたときに発生します。

EclipseClasspath オブジェクトのドキュメント を読んで、他の方法は を使用することだと思いeclipse.classpath.file.withXmlますが、生の xml を編集するには面倒です。

他のよりエレガントなソリューションはありますか?

4

3 に答える 3

0

他のコードが使用している生成されたソースを Eclipse が認識しない場合、代わりに Eclipseでコンパイラエラーが発生する可能性があります。

しかし、gradle が 2 番目の jar を作成するために使用していたソース ディレクトリがあった場合、またはそのようなものである可能性があります。そのようなものを別のソースセットとして持っている場合は、それをEclipseから除外できます:

sourceSets {
    main {
        java { srcDir 'src' }
    }
    gen {
        java { srcDir 'src-gen' }
    }
}
eclipse {
    classpath {
        sourceSets -= [sourceSets.gen]
    }
}

プロジェクト ファイルが別のプロジェクトのソースを参照するという、少し異なる状況があるため、Eclipse にコードを表示したくありません。

sourceSets.main.java { srcDir '../other_project/src' }
eclipse {
    classpath {
        // remove the source set from the Eclipse classpath
        sourceSets -= [sourceSets.main]
    }
    // Don't let the src dir show up as a linked folder either
    project {
        file {
            withXml {
                def res = it.asNode().get('linkedResources')[0]
                res.link.findAll{ it.name[0].text() == 'src' }.each{     
                    res.remove(it) }
            }
        }
    }
}
于 2016-06-22T14:36:37.027 に答える
0

「gen」ディレクトリをメインのJavaソースセットに追加することで、同様のシナリオを解決しました。

次のように

configurations {
 jaxb
}

dependencies {
  jaxb 'com.sun.xml.bind:jaxb-xjc:'
}

sourceSets.main.java.srcDirs 'gen'

task createGenDirs() {
  file("gen").mkdirs()
}

task jaxb << {
  dependsOn createGenDirs

  //generate src into gen directory

}

task cleanGeneratedCode(type: Delete) {
  delete file("gen")

clean.dependsOn cleanGeneratedCode

お役に立てれば

于 2012-11-30T14:01:49.727 に答える