2017-08-08 5 views
0

現在、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に取得させるのですか?

答えて

0

なぜclassesタスクをオーバーライドしていますか?入力用

apply plugin: 'java' 

task xmlBeanClasses { 
    def inclusionPattern = project.ext.has('inclusionPattern') ? project.ext.inclusionPattern : '*.xsd' 
    inputs.property 'inclusionPattern', inclusionPattern 
    inputs.dir project.ext.inputsPath 
    inputs.dir schemaPath 
    outputs.dir "$buildDir/classes/xmlbeans" 
    outputs.dir "$buildDir/generated-sources/xmlbeans" 
    doLast { 
     // TODO: generate classes in $buildDir/classes/xmlbeans 
    } 
} 

// wire the new task into the DAG 
classes.dependsOn xmlBeanClasses 

// add the generated classes dir to the "main" classesDirs 
// (this dir will now be included in the jar etc) 
sourceSets.main.output.classesDirs.add files("$buildDir/classes/xmlbeans") 
+0

ありがとう:通常のアプローチは、DAG

などに新しいディレクトリやワイヤー、それをに書き込み、追加タスクを作成することです。このgradleを試してみると、ClassesDirsは変更を許可していません。なぜそれが私の質問で言及されたように行われたかについては、これは長年にわたり多くの人々に触れられている大きなプロジェクトです。すべてを壊すことなくgradleをアップグレードしようとしています。 –

関連する問題