0

編集:私はこれらの2つのコマンドを実行して、gradleサブプロジェクトでこれらの結果を取得しようとしています...

gradle assemble -> databus-Developer-Build.zip
gradle -DmyVersion=1.0.2 -> databus-1.0.2.zip

現在、$myVersionの代わりに$versionを使用すると、出力はdatabus-null.zipになります。$ MyVersionを使用すると、「myVersionはそのタスクのプロパティではありません」というエラーが表示されます。:(:(。

編集

したがって、最初の回答を試すことは、「タスク':webserver:myZipでプロパティ$myVersionが見つかりませんでした」で完全に失敗しました。

注:現在、サブプロジェクトでこれを実行しようとしています。これがサブプロジェクトのgradleコードです...

project(':webserver') {
    project.ext.genLibDir = file('lib')
    project.ext.fixedLibDir = file('../master/libother')

    dependencies {    
        compile project(':master')
        compile fileTree(dir: '../webserver/lib', include: '*.jar')
        compile fileTree(dir: '../webserver/play-1.2.4/framework/lib', include: '*.jar')
        compile fileTree(dir: '../webserver/play-1.2.4/framework', include: 'play-*.jar')   
    }

    task deleteJars(type: Delete) {
        ext.collection = files { genLibDir.listFiles() }
        delete ext.collection
    }
    task copyJars(type: Copy) { 
        from(configurations.compile) {}
        from(fixedLibDir) {}
        into genLibDir
    }
    copyJars.dependsOn('deleteJars')
    classes.dependsOn('copyJars')

    task myZip(type: Zip) {
        archiveName "dashboard-"+$myVersion+".zip"
        from('..') {
            include 'webserver/run*.sh'
            include 'webserver/app/**'
            include 'webserver/conf/**'
            include 'webserver/play-1.2.4/**'
            include 'webserver/public/**'
        }
    }

    assemble.dependsOn('myZip')

    //playframework has it's own generation of .classpath and .project fils so do not 
    //overwrite their versions.  NEED to call "play.bat eclipsify" here...
    task eclipse(overwrite: true) {
    }


    gradle.taskGraph.whenReady {taskGraph ->
        if (taskGraph.hasTask(assemble) && myVersion == null) {
            myVersion = 'Developer-Build'
        }
    }
}

ありがとう、ディーン

4

2 に答える 2

0

「myVersionはそのタスクのプロパティではありません」というエラーが表示される理由は、「-D」ではなく-Pを使用してプロパティを渡す必要があるためだと思います。

于 2012-09-06T22:45:11.447 に答える
0

わかりました、正解は次のようなことです...(これをallprojectsセクションに追加してください)。

   if (project.hasProperty('myVersion')) {
     project.ext.xVersion = project.myVersion
   } else {
     project.ext.xVersion = 'Developer-Build'
   }

そして興味深いことに、これは以下の1つでは機能しません。これは、「バージョン」が何らかの予約済みプロパティのようであり、起動時に未指定に設定されているためです...

   if (project.hasProperty('version')) {
     project.ext.xVersion = project.version
   } else {
     project.ext.xVersion = 'Developer-Build'
   }

バージョンは予約済みのプロパティのように見えますが、アーティファクトの公開に使用される可能性が高いため、最善の解決策は次のとおりです。

   if (project.hasProperty('myVersion')) {
     project.version = project.myVersion
   } else {
     project.version = 'Developer-Build'
   }

自動ビルドはmyVersionに合格しますが、開発者はもちろん合格しません。

于 2012-09-28T14:09:05.273 に答える