定制清单在战争的任务

0

的问题

我需要修改清单的文件在大会期间的战的文件。 我需要添加一个清单上的所有文件一类的路径,以避免 java.io.IOException: CreateProcess error=206, The filename or extension is too long 异常被扔的时候我想要执行这java文件,在Windows的机器。

宣布直接在建立脚本,这项任务不会的工作。

task pathingWar(type: War) {
  getArchiveAppendix().set("pathing")
  doFirst {
    manifest {
      attributes "Class-Path": sourceSets.main.runtimeClasspath.files.collect { project.uri(it) }.join(" ")
    }
  }
}

但是我想创建一个独立的任务在 buildSrc 目录像的代码如下。 战争创建的路径中的附录名字、但没有额外的 Class-Path 酒店里面 MANIFEST.MF 即使文件 classpathFiles 变拥有所需的价值观,同时调试该执行的任务。

class PathingWar extends War {

   PathingWar() {
    getArchiveAppendix().set("pathing")
  }

  @TaskAction
  def setManifestTask() {
    def classpathFiles = ((SourceSet)((SourceSetContainer) getProject().getExtensions().getByName("sourceSets"))
            .getByName("main")).getRuntimeClasspath().getFiles().collect {project.uri(it)}.join(" ")
    setManifest(getManifest().attributes(["Class-Path": classpathFiles]))
  }
}

属性不会被置的清单,什么我错过了翻译的逻辑,从建立脚本到定义的任务?

更新

经过进一步的检查我看到的时候 setManifestTask() 注解 @TaskAction 正在执行的已经太迟了。 在这一点上的战争产生下 build/libs 文件夹。 我需要另一种方式的配置清单中。 我不知道哪些其他方法使用。

gradle java
2021-11-22 21:50:43
1

最好的答案

0

我试图设定的清单 类径 属性 doFirst{} 框因此,它将作为第一个行动和类似像在原始脚本没有成功。 仍然 罐子 是产生之前关闭 doFirst 是执行。

之后我读下面的回答 https://stackoverflow.com/a/16413207/978302 我理解我不应该是压倒一切的战争的任务。 相反,我需要配置其与提供的投入和结果将产生的在幕后。

最终解决方案不包含任何行动定义。 只有额外的配置为:

  • archivaAppendix
  • 清单

任务定义:

class PathingWar extends War {

  PathingWar() {
    getArchiveAppendix().set("pathing")
    manifest {
      def classpathFiles = ((SourceSet) ((SourceSetContainer) getProject().getExtensions().getByName("sourceSets"))
              .getByName("main")).getRuntimeClasspath().getFiles().collect { project.uri(it) }.join(" ")
      attributes "Class-Path": classpathFiles
    }
  }
}

顺便说一句:我还是不明白为什么任务限定在脚本运作的预期。

2021-11-23 10:39:17

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................