繁体   English   中英

Gradle子项目installDist依赖项

[英]Gradle subproject installDist dependency

我有一个包含两个子项目的项目,并且在使installDist能够识别最新版本时遇到问题。 我有一个主要的build.gradle项目projName ,它有一个可以很好编译的子项目subproj1 ,另一个有以下任务的子项目exec

  task makeMyExec(type: Copy) {

  dependsOn(':projName.exec:installDist')
  copy {
  from rootProject.file("projName/build/install/exec/")
  into rootProject.file("../myExec/")
  }
}

def createScript(project, mainClass, name) {

  project.tasks.create(name: name, type: CreateStartScripts) {
    outputDir       = new File(project.buildDir, 'scripts')
    mainClassName   = mainClass
    applicationName = name
    classpath       = 
    project.tasks[JavaPlugin.JAR_TASK_NAME].outputs.files + 
    project.configurations.runtime
  }
  project.tasks[name].dependsOn(project.jar)

  project.applicationDistribution.with {
    into("bin") {
      from(project.tasks[name])
      fileMode = 0755
      }
    }
 }

然后在子项目exec我具有以下build.gradle

 apply plugin: 'application'

 dependencies {
    compile project(':subproj1')    
 }

 startScripts.enabled = false
 run.enabled = false

 createScript(project, 'projName.exec.exec1Main', 'script1')
 createScript(project, 'projName.exec.exec2Main', 'script2')
 createScript(project, 'projName.exec.exec3Main', 'script3')

这个想法是,每个脚本script1script2script3应该添加到子项目execinstallDist中,以便需要在复制命令运行之前创建它们。 不幸的是,复制命令总是首先运行。

这意味着如果我运行两次,则所有副本都将正确复制,并且将脚本放置在正确的位置,但是不幸的是,如果只运行一次,则不是。

我非常感谢您提供帮助,以解决我在此处的依赖项存在的问题,无论是execsubproj1的依赖,还是makeMyExec任务中installDist的依赖。

有关信息-如果我在子项目中只有一个mainClass并且仅定义

mainClassName ='projName.exec.exec1Main'
applicationName = 'script1'

然后这将按预期工作,并且所有lib和脚本都在复制完成之前构建,因为那时对installDist的依赖似乎可以工作。

我现在找到了解决该问题的方法。 如果我将makeMyExec任务修改为:

task makeMyExec(type: Copy) {

  dependsOn('installDist','script1','script2','script3')
  from rootProject.file("projName/build/install/exec/")
  into rootProject.file("../myExec/")
}

这消除了该行的必要性:

project.tasks[name].dependsOn(project.jar)

并将依赖项添加到主项目的installDist的复制任务以及每个子任务script1script2script3

我的错误是误解了project.applicationDistribution.with实际上并未更新:projName.exec:installDist的状态

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM