首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分级罐创建时间

分级罐创建时间
EN

Stack Overflow用户
提问于 2021-06-24 17:24:35
回答 2查看 54关注 0票数 0

我有一个gradle构建,它检索属性文件,并且是远程的(将密码排除在github之外),但是远程检索在JAR构建时还没有完成。

我想我要么必须在执行阶段而不是配置阶段创建JAR,要么在执行阶段添加远程文件,但两者都无法工作。

有什么建议吗?

代码语言:javascript
运行
复制
task fatJar(type: Jar) {

  doFirst {
    exec {
      executable './scripts/getRemoteResources.sh'
    }
  }

  ...

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) 
  }

  //some resources are retrieved remotely & b/c of timing they don't get included here
  from ('src/main/java/resources') {
    include '*'
  }

  with jar

  //tried this but doesn't work
  //doLast {
  //  jar {
  //    from ('src/main/java/resources') {
  //      include '*'
  //    }
  //  }
  //}


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-24 19:22:24

您不应该为此使用任务图。另外,您也不应该将该文件下载到src/main/

相反,你应该

  1. 创建一个任务,将远程资源下载到$buildDir下的目录中(因此可以通过“清除”任务清除该资源)
  2. 配置TaskOutputs,以便缓存和重用结果.
  3. 将任务连接到Gradle的达格
  4. 将目录添加到"processResources“任务中,使其在运行时类路径(即jar中)结束。

例:

代码语言:javascript
运行
复制
tasks.register('remoteResources', Exec) {
   inputs.property('environment', project.property('env')) // this assumes there's a project property named 'env'
   outputs.dir "$buildDir/remoteResources" // point 2 (above)
   commandLine = [
      './scripts/getRemoteResources.sh', 
      '--environment', project.property('env'),
      '--outputdir', "$buildDir/remoteResources"
   ]
   doFirst {
      delete "$buildDir/remoteResources"
      mkdir "$buildDir/remoteResources"
   }
}
processResources {
   from tasks.remoteResources // points 3 & 4 (above)
}

请参阅Java插件-任务

processResources -拷贝 将生产资源复制到生产资源目录中。

票数 0
EN

Stack Overflow用户

发布于 2021-06-24 18:16:53

这似乎是可行的,所以我同意,除非有人有更好的解决办法.

代码语言:javascript
运行
复制
gradle.taskGraph.beforeTask { Task task ->

  println "just before $task.name"

  // i just chose to kick this off with the first task sent through here
  if (task.name=="compileJava") {
    exec {
      executable './scripts/getRemoteResources.sh'
    }
  }
}
      


task fatJar(type: Jar) {

  ...

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) 
  }

  from ('src/main/java/resources') {
    include '*'
  }

  with jar

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68120244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档