現在、Gradleバージョン1.7を使用してビルドされているプロジェクトがあります。ビルドがはるかに高速で依存関係を並行してダウンロードできるため、バージョン4.1に移行しようとしています。しかし私は、私がかなり理解していない奇妙な行動を見ています。私はjavaプラグインのメインクラスのタスクをオーバーライドするいくつかのサブプロジェクトのbuild.gradleファイルを持っています。その中では、ビルドディレクトリにクラスを生成するantタスクを実行します。JARタスクのGradle 1.7から4.1への変更
task classes(overwrite: true) {
inputs.dir project.ext.inputsPath
outputs.dir "${project.buildDir}/classes/main"
doLast {
ant.taskdef(name: 'xmlbean', classname: 'org.apache.xmlbeans.impl.tool.XMLBean', classpath: configurations.compile.asPath)
ant.xmlbean(srcgendir: "${project.buildDir}/generated-sources/xmlbeans",
classgendir: "${project.buildDir}/classes/main",
javasource: '1.5',
failonerror: true,
includeAntRuntime: false,
classpath: project.configurations.compile.asPath) {
fileset(dir: schemaPath, includes: project.ext.has('inclusionPattern') ? project.ext.inclusionPattern : '*.xsd')
}
}
}
このすべての作品期待して、私はこれは、クラスのタスクがあればわからない(2回実行しているようだ、私はコンソール
> Task :my-task:classes
Putting task artifact state for task ':my-task:classes' into context took 0.0 secs.
Executing task ':my-task:classes' (up-to-date check took 0.002 secs) due to:
[ant:xmlbean] Time to build schema type system: 0.616 seconds
[ant:xmlbean] Time to generate code: 1.512 seconds
[ant:xmlbean] Compiling 226 source files to E:\Development\my-task\build\classes\main
[ant:xmlbean] 4 warnings
> Task :my-task:classes
[ant:xmlbean] Time to compile code: 6.263 seconds
:my-task:classes (Thread[Task worker for ':' Thread 3,5,main]) completed. Took 8.899 secs.
:my-task:jar (Thread[Task worker for ':' Thread 3,5,main]) started.
> Task :my-task:jar
Putting task artifact state for task ':my-task:jar' into context took 0.0 secs.
Executing task ':my-task:jar' (up-to-date check took 0.004 secs) due to:
Output property 'archivePath' file E:\Development\my-task\build\libs\my-task.jar has changed.
:my-task:jar (Thread[Task worker for ':' Thread 3,5,main]) completed. Took 0.012 secs.
:my-task:install (Thread[Task worker for ':' Thread 3,5,main]) started.
> Task :my-task:install
から得る出力され{ project_dir }/build/classes/main
で生成されたクラスを取得するとこれは最初に実行されているantを実行するタスクとは異なります)。前述のように、私はantタスクによって生成されたクラスを取得します。
私の問題は、JARタスクを実行する何らかの理由で、ビルド/クラス/メイン内のクラスがアーカイブされていないという点で、Gradle 1.7 - > 4.1の動作が変更されているようですjar、ちょうど空のマニフェストファイルがあります。どのようにして、antタスクを使って生成されたこれらのクラスを、デフォルトのjarタスクを使用してJarに取得させるのですか?
ありがとう:通常のアプローチは、DAG
などに新しいディレクトリやワイヤー、それをに書き込み、追加タスクを作成することです。このgradleを試してみると、ClassesDirsは変更を許可していません。なぜそれが私の質問で言及されたように行われたかについては、これは長年にわたり多くの人々に触れられている大きなプロジェクトです。すべてを壊すことなくgradleをアップグレードしようとしています。 –