我尝试构建jar,然后将其复制到另一个文件夹。
task createJar(type: Jar) {
archiveName = "GradleJarProject.jar"
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': version,
'Main-Class': 'me.test.Test'
}
baseName = project.name
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
task copyJarToBin {
copy {
from 'build/libs/GradleJarProject.jar'
into "d:/tmp"
}
}
task buildApp (dependsOn: [clean, createJar, copyJarToBin])
如果我删除项目中的 /build文件夹并运行build dApp()任务,任务createJar()将生成. jar文件,但CopyJarTobin()将找不到该. jar文件。
你能帮我吗?
谢谢。
只是对上述答案做了一些更正:
jar {
baseName = "$artifactId"
version = '0.0.1'
}
task copyJar(type: Copy) {
from jar // copies output of file produced from jar task
into 'destination-folder'
}
build.finalizedBy copyJar
我认为上面的答案有点过时了。下面是使用gradle 3.3的答案
jar {
baseName = 'my-app-name'
version = '0.0.1'
}
task copyJar(type: Copy) {
from jar // here it automatically reads jar file produced from jar task
into 'destination-folder'
}
build.dependsOn copyJar
罪魁祸首是你的CopyJarTobin
任务。做的时候
task copyJarToBin {
copy {
from 'build/libs/GradleJarProject.jar'
into "d:/tmp"
}
}
在配置期间使用复制
方法复制jar。(请参阅https://docs.gradle.org/current/userguide/userguide_single.html#sec的gradle用户指南:build_phases了解构建生命周期)您想在执行阶段(任务的执行)运行实际的复制操作。
解决这个问题的一种方法是将copy方法的调用移动到doLast块中:
task copyJarToBin {
doLast {
copy {
from 'build/libs/GradleJarProject.jar'
into "d:/tmp"
}
}
}
这种方法的问题是,即使文件没有更改,您也无法受益于gradles增量构建功能并在每次执行任务时复制该文件。
编写CopyJarTobin任务的一种更好、更惯用的方法是更改任务实现以使用Copy
任务类型:
task copyJarToBin(type: Copy) {
from 'build/libs/GradleJarProject.jar'
into "d:/tmp"
}
我们甚至可以利用gradle的自动连接功能来改进这个片段。您可以将一个任务的输出声明为另一个任务的输入。因此,不要编写“build/libs/GradleJarProject”。“你可以简单地做:
task copyJarToBin(type: Copy) {
from createJar // shortcut for createJar.outputs.files
into "d:/tmp"
}
现在您无需担心任务排序,因为gradle知道必须先执行createJar
任务,然后才能执行copJarTobin
任务。
问题内容: 我尝试构建jar,然后将其复制到另一个文件夹。 但是我找不到一个问题。copyJarToBin任务尝试复制旧的jar。如果我删除项目中的/ build文件夹并运行buildApp()任务,则任务createJar()将生成.jar文件,但copyJarToBin()找不到该.jar文件。 你可以帮帮我吗? 谢谢。 问题答案: 罪魁祸首是您的任务。做的时候 您可以在配置期间使用该方法复制
我正在为unity开发一个android插件,需要生成一个jar文件。为此,我遵循https://stackoverflow.com/a/20446513/3742608中的步骤,将构建变体设置为release,重建项目并执行MakeJar。然而,我的项目确实有gradle只在另一个文件夹“中间”中使用的文件夹: 我将一些内容更改为以下内容,但没关系,不会生成jar文件。 bundles/rele
我正在使用gradle构建我的项目,使用以下build.gradle文件: 当我输入gradle build命令时,我希望gradle在生成后执行一个任务。 我在网上找到了一个,我尝试了多种方法都失败了。 如果你知道怎么做,请告诉我。
为了学习JavaFX,我使用IntelliJ IDEA创建了我的第一个项目,并将该项目导出为Eclipse项目。当我在这两个IDE中运行项目时,一切都运行得很好。不幸的是,在构建项目并尝试运行.jar或.exe文件之后,我得到了一个异常,我认为问题出在FXMLLoader中,它无法找到fxml文件。 项目层次结构
这是我项目的build.gradle文件。 这里我尝试使用gradle Build从ubuntu终端生成apk文件。 但Gradle生成失败....... 我没有Android Studio 我只有Android SDK。 我的主要任务是在启动android Studio时生成apk文件。 来自终端 ./gradlw使用此cmd汇编调试。 这是我的日志....... > 错误:配置项目“:App”
我是格拉德尔的新手。我正在尝试从我的构建中构建Dockerfile。格拉德尔 任务“:buildDocker”的执行失败。Docker执行失败的命令行[Docker build-t 73299472920.dkr.ecr.us-east-1.amazonaws.com/camunda:0.0.0.uncommitted-71119c2/Users/amx/Code/backend/jclaim/b