我想用java6在我的项目中编译一些代码,用java7编译一些代码。我似乎无法为不同的源集分配不同的源/目标兼容性。我知道这是一个奇怪的设置,但是java7代码依赖于一些java7库,而java6代码必须由其他的java6代码加载(超出我的控制范围)。
我一直在尝试使用一个子项目
java7-project
\build.gradle (compatibility = 1.7, compile project(':java6-submodule'))
\settings.gradle
\java6-module
\build.gradle (compatibility = 1.6)这实际上很好,但是,我希望在创建jar时将java7 6-模块作为java7 7-项目的一部分。我也可以这么做..。使用(来自互联网的一些代码)
jar {
from {
project(':java6-module').configurations.archives.allArtifacts.files.collect {
zipTree(it)
}
}
}但是,当我运行:install任务将库放入本地maven repo时,为java6 7-项目生成的pom对“Java6-模块”具有编译依赖性。
我希望能够用不同的java版本编译不同的代码,同时也将它(或模拟行为)作为一个模块处理?
发布于 2014-05-06 22:39:39
最后,我按照Peter的建议,为我的java6代码使用了一个单独的java6,并在构建文件中添加了如下内容:
sourceSets {
java6Src // new source set
main { // make sure our new source set is included as part of the main so it compiles and runs
compileClasspath += java6src.output
runtimeClasspath += java6Src.output
}
}
compileJava6SrcJava { // set the compile options
sourceCompatibility = 1.6
targetCompatibility = 1.6
// if jdk6.home is defined use it for compatibility
def jdk6Home = System.properties['jdk6.home']
if(jdk6Home) {
options.bootClasspath = (new File(jdk6Home,"/jre/lib/rt.jar")).canonicalPath
}
}
jar { // include java6Src set in the jar
from {
sourceSets.java6Src.output
}
}https://stackoverflow.com/questions/23418005
复制相似问题