Plugins Gradle插件从插件jar复制文件
我正在创建我的第一个gradle插件。我试图将一个文件从分发jar复制到我在项目中创建的目录中。虽然该文件存在于jar中,但我无法将其复制到目录中 这是我的任务代码:Plugins Gradle插件从插件jar复制文件,plugins,resources,jar,task,gradle,Plugins,Resources,Jar,Task,Gradle,我正在创建我的第一个gradle插件。我试图将一个文件从分发jar复制到我在项目中创建的目录中。虽然该文件存在于jar中,但我无法将其复制到目录中 这是我的任务代码: import org.gradle.api.DefaultTask; import org.gradle.api.tasks.TaskAction; class InitTask extends DefaultTask { File baseDir; private void copyEnvironment(File
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
class InitTask extends DefaultTask {
File baseDir;
private void copyEnvironment(File environments) {
String resource = getClass().getResource("/environments/development.properties").getFile();
File input = new File(resource);
File output = new File(environments, "development.properties");
try {
copyFile(input, output);
}
catch (IOException e) {
e.printStackTrace();
}
}
void copyFile(File sourceFile, File destFile) {
destFile << sourceFile.text
}
@TaskAction
void createDirectories() {
logger.info "Creating directory."
File environments = new File(baseDir, "environments");
File scripts = new File(baseDir, "scripts");
File drivers = new File(baseDir, "drivers");
[environments, scripts, drivers].each {
it.mkdirs();
}
copyEnvironment(environments);
logger.info "Directory created at '${baseDir.absolutePath}'."
}
}
import org.gradle.api.DefaultTask;
导入org.gradle.api.tasks.TaskAction;
类InitTask扩展了DefaultTask{
文件baseDir;
专用void copyEnvironment(文件环境){
字符串resource=getClass().getResource(“/environments/development.properties”).getFile();
文件输入=新文件(资源);
文件输出=新文件(环境,“development.properties”);
试一试{
复制文件(输入、输出);
}
捕获(IOE异常){
e、 printStackTrace();
}
}
无效复制文件(文件源文件、文件目标文件){
destFilegetClass().getResource()
返回一个URL。要访问该URL,您必须直接读取它(例如使用URL.text
),而不是首先将其转换为字符串/文件。或者您可以使用getClass().getResourceAsStream().text
,这可能更准确。在这两种情况下,您都可以选择指定文件编码。Hi@peter!成功了!这是新的copyEnvironment方法:void copyEnvironment(environments){String resource=InitTask.class.getResourceAsStream(“/environments/development.properties”).text;文件输出=新文件(环境,“development.properties”);输出
:init
java.io.FileNotFoundException: file:/path-to-jar/MyJar.jar!/environments/development.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at groovy.util.CharsetToolkit.<init>(CharsetToolkit.java:69)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.newReader(DefaultGroovyMethods.java:15706)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.getText(DefaultGroovyMethods.java:14754)
at org.codehaus.groovy.runtime.dgm$352.doMethodInvoke(Unknown Source)
at org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.doMethodInvoke(GeneratedMetaMethod.java:70)
at groovy.lang.MetaClassImpl$GetBeanMethodMetaProperty.getProperty(MetaClassImpl.java:3465)
at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:61)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
at br.com.smartcoders.migration.tasks.InitTask.copyFile(InitTask.groovy:29)