1

サブプロジェクト projectB と projectC を含むマルチプロジェクト ビルド (projectA) があります。各サブプロジェクトには、zip に追加したいリソースがあります。projectB のリソースは、zip 内の projectB というフォルダーにある必要があります。

ディストリビューション プラグインを使用して zip を作成しています。このコードは機能しますが、サブプロジェクトの数と名前に関係なく機能するコードがいくつかあります。

distributions {
    release {
        baseName 'release'
        contents {
            into('projectB') {
                from 'projectB/src/main/resources/'
            }
            into('projectC') {
                from 'projectC/src/main/resources/'
            }
        }
    }
}

私は次のことを試しました:

distributions {
    release {
        baseName 'release'
        contents {
            subprojects.each {
                p -> into(p.name + '-resources') {
                        from p.projectDir + '/src/main/resources/config'
                    }
            }
        }
    }
}

しかし、それはコンパイルされません。

これを達成する方法について何か提案はありますか?

4

1 に答える 1

2

理由は定かではありませんが、次のように動作します。

apply plugin: 'distribution'

distributions {
  release {
    baseName 'release'
    contents {
      subprojects.each { p ->
        into("${p.name}-resources") {
          from("${p.projectDir}/src/main/resources/config")
        }
      }
    }
  }
}

はい、わかった。この行は問題を引き起こしていました:

from(p.projectDir + "/src/main/resources/config")

Fileに追加することはできませんString。したがって、両方が仕事をします:

from(p.projectDir.toString() + "/src/main/resources/config")
from("${p.projectDir}/src/main/resources/config")

デモはここにあります。

于 2015-11-23T12:16:48.743 に答える