在Windows环境中运行groovyc时,由于类路径的长度,我遇到了问题,在我的情况下。我想通过创建一个路径jar来解决这个问题,然后把这个jar放在cp上。我如何创建一个path/jar /所有在Gradle中自动指定的类路径条目,然后将该jar添加到cp中?如何在Gradle中创建路径jar
回答
我终于拿到了“寻路罐子”的想法来工作。我认为这是一个永久的解决方法。如果它成为gradle本身的一部分,这可以被认为是一种解决方案。
原始的路径jar代码是由Peter提供的,但它不起作用。问题:路径jar中引用的classpath元素必须相对于路径jar的位置。所以,这似乎对我有用。
task pathingJar(type: Jar , dependsOn: 'cleanPathingJar') {
/**
* If the gradle_user_home env var has been set to
* C:\ on a Win7 machine, we may not have permission to write the jar to
* this directory, so we will write it to the caches subdir instead.
* This assumes a caches subdir containing the jars
* will always exist.
*/
gradleUserHome = new File(gradle.getGradleUserHomeDir(), "caches")
relativeClasspathEntries = configurations.compile.files.collect {
new File(gradleUserHome.getAbsolutePath()).toURI().
relativize(new File(it.getAbsolutePath()).toURI()).getPath()
}
appendix = "pathing"
destinationDir = gradleUserHome
doFirst {
manifest {
attributes "Class-Path": relativeClasspathEntries.join(" ")
}
}
}
compileGroovy {
dependsOn(pathingJar)
classpath = files(pathingJar.archivePath)
}
这里是一个测试的解决方案:
task pathingJar(type: Jar) {
appendix = "pathing"
doFirst {
manifest {
attributes "Class-Path": configurations.compile.files.join(" ")
}
}
}
compileGroovy {
dependsOn(pathingJar)
classpath = files(pathingJar.archivePath)
}
根据您的具体要求,您可能需要调整这一点。例如,如果您有用Groovy编写的测试,那么您还需要一个用于测试编译类路径的路径Jar。在这种情况下,你需要重复上面的配置如下:
task testPathingJar(type: Jar) {
appendix = "testPathing"
doFirst {
manifest {
attributes "Class-Path": configurations.testCompile.files.join(" ")
}
}
}
compileTestGroovy {
dependsOn(testPathingJar)
classpath = files(testPathingJar.archivePath)
}
哇,Peter Niederwieser自己的回答!谢谢!我希望尽快尝试一下。顺便说一下,Spock很壮观。 – 2011-03-27 02:12:34
后续问题:这似乎没有按预期工作。路径的jar被创建,但是当我编译时将路径jar添加到classpath中,出于某种原因,编译失败并且抱怨丢失了在路径jar中引用的jar ... – 2011-04-04 14:16:23
我在想这会不起作用,因为这指定了清单中罐子的绝对路径。在这种情况下,不清楚绝对路径是否有效。 – 2011-04-04 15:15:44
- 1. Gradle:如何创建多个jar?
- 2. 如何在Gradle构建项目中创建几个ejb jar?
- 3. Netbeans创建的JAR类路径
- 4. 创建包含类路径的jar
- 5. 创建Jar文件,重复类路径
- 6. 如何在java中创建路径
- 7. Netlogo - 如何创建路径?
- 8. 在gradle中为jar清单定义自定义类路径
- 9. Eclipse Jar构建路径
- 10. 如何在gradle-wrapper属性中设置gradle的本地路径
- 11. 如何在Java中创建一个不包含绝对路径名的Zip/Jar
- 12. 在JAR中包含JAR的类路径
- 13. Eclipse:如何导出在构建路径中具有.jar文件的.jar文件
- 14. 从gradle/groovy中的路径创建目录结构
- 15. JRebel - 在类路径上同步新的gradle jar
- 16. ActiveMQ&Camel - 如何在路由路径中创建依赖
- 17. gradle初始化脚本中使用的jar的Gradle打印路径
- 18. 创建jar而不用gradle编译
- 19. Gradle:使用Spring Boot Dependencies创建'fat jar'
- 20. 使用Gradle创建可运行的JAR
- 21. 类路径没有得到写入MANIFEST.MF在JAR文件创建
- 22. 如何使用构建路径使用的依赖项创建Maven项目jar?
- 23. 如何在运行由'lein uberjar'创建的jar时设置类路径?
- 24. 如何将jar文件添加到构建路径中
- 25. 如何从可运行jar文件这是在构建路径
- 26. CGPathMoveToPoint在创建路径
- 27. 如何在gradle中创建动态url?
- 28. 如何为此路径创建动画?
- 29. 如何创建相对文件路径
- 30. 如何从路径创建属性
但是这似乎不包含当前项目的jar文件在类路径中? – 2014-01-13 07:08:13
这[在3.0.8之间的Groovy版本中不起作用](https://github.com/grails/grails-core/issues/9300)。链接的Grails问题还包括一个完整的解决方法,使用这种方法。 – 2015-11-26 13:50:54