我正在尝试这样做:
jar {
doLast{
from "build/libs/TheJar.jar"
into "."
}
}
到目前为止,我已经尝试了各种教程,包括这个答案中的所有形式,但都不起作用。唯一有效的是调用一个单独的任务,但我想知道为什么我的构造是错误的,为什么我不能在jar或影子Jar任务之后运行一些东西。
看起来你把链接帖子中的部分答案混在了一起,而不知道你的最终代码到底在做什么。
Gradle中的任务可能有一种类型(例如,Copy
、
Jar
、…)。此类型定义任务执行后将执行的操作(所谓的任务操作)。没有类型的任务在执行时不会执行任何操作,除非手动添加任务动作。使用doFirst将传递的动作(也称为闭包)添加到任务动作列表的开头,使用doLast将其添加到列表的末尾。
doFirst和doLast闭包之外的所有内容都不是任务执行的一部分,但可以用于配置任务:
task example {
doLast {
println "second action"
}
doFirst {
println "first action"
}
println "configuration"
}
使用
gradle example
运行上面的代码,您将看到日志消息的顺序为配置
、第一个动作
、第二个动作
。
任务配置将运行,即使任务稍后不会执行。即使您调用
gradle
(没有任何任务名称作为参数),控制台仍将打印配置
。这是链接问题中的实际问题。
让我们来看看真正的问题:如何复制文件?
Gradle提供了两种复制文件的方法。第一个是任务类型复制。您可以基于此类型创建任务,应用配置,然后直接从命令行调用它,或者使用
dependsOn
或finalizedBy
定义任务依赖项:
task copySomeFiles(type: Copy) {
from '...'
into '...'
}
但是,您不想创建额外的任务。Gradle还有一个名为
Copy
的方法,可以在脚本中的任何位置调用该方法并立即复制文件:
copy {
from '...'
into '...'
}
上面的代码会复制您的文件,但每次Gradle执行时它都会复制您的文件(这可能很常见,例如在使用IDE时)。要解决此问题,您可以使用
复制
将代码移动到任务操作中,例如在doFirst
或doFinal
闭包中:
jar {
doLast {
copy {
from "build/libs/TheJar.jar"
into "."
}
}
}
如您所见,您的代码缺少
复制
语句。现在,每当您的任务jar
被执行时,它的最后一个任务操作将按预期复制文件。
加分题:为什么没有错误?
到的方法来配置每个类型为Jar的任务。来自的方法将文件添加到JAR文件中,方法将文件添加到中,设置JAR内的目标目录。因此,您的代码不是复制,而是配置底层任务jar。然而,这并没有负面影响,因为这种配置在doLast中得到应用,而doLast只在创建JAR文件后运行。无法配置已发生的情况。您的“问题”是,您的代码是完全有效的Gradle代码。任务jar属于jar类型。可以使用从
和
在安装生命周期期间,我需要在网络文件夹中复制一个可运行的jar。现在我试着在我的问题上添加更多的细节。我正在开发一个java程序使用maven一样的工具构建。之后 现在,我在pom中创建了一些配置文件,安装后,我需要将可运行的jar文件移到网络目录中。例如: 我在target/myjar.jar中的jar文件 网络文件夹位于\192.168.0.11\export\jars 为此,我使用具有以下配
我有一个Gradle项目,它有来自不同存储库的大量依赖项(,)。在成功执行任务并检查zip存档后,我发现在文件夹中复制了某些JAR: bcprov-jdk14-1.38。jar和bcprov-jdk14-138。罐子 bcmail-jdk14-1.38。jar和bcmail-jdk14-138。罐子 Jar元组具有相同的大小和内容。我想这是因为在不同的存储库中,这些依赖项具有不同的文件名。当执行任
我尝试用JavaExec类型创建gradle任务。在gradle文档中,我发现我不需要使用java插件。但是这个插件与android插件不兼容。如果我没有应用java插件,我会收到以下错误: 错误:无法找到或加载主类包。TestM 我的任务示例: 如果使用相同的任务创建java库模块,则会收到相同的错误: 错误:无法找到或加载主类 也许我需要设置类路径变量?如何在Android Studio中获取
问题描述: 我正在使用Gradle Shade插件,它一切正常,它将资源文件复制到最终的jar。但是,正如文档所说,它不能包含其他文件作为资源,因为它无法将它们与依赖项区分开来。它解压缩它们是ntead。 我想做的是:我想复制额外的代码。jar
我在跑Pop_OS!20.10 [✓] Flutter(Channel stable,1.22.3,Linux,locale en_US.UTF-8)•Flutter版本1.22.3 at/home/samdc/DevTools/Flutter•框架版本8874f21(3个月前),2020-10-29 14:14:35-0700•引擎版本a1440ca392•Dart版本2.10.3•Pub下载镜
我已经从spring入门指南下载了源代码(zip文件):http://spring.io/guides/gs/rest-service/ 在文件夹“Complete”中生成整个项目已成功。使用Gradle(Gradle run)运行生成的jar文件也是成功的。但当我尝试在Windows命令行中使用“java-jar build\libs\gs-rest-service-0.1.0.jar”手动运行