首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java-6和java-7部分编译gradle项目

使用java-6和java-7部分编译gradle项目
EN

Stack Overflow用户
提问于 2014-05-01 22:50:19
回答 1查看 1.2K关注 0票数 1

我想用java6在我的项目中编译一些代码,用java7编译一些代码。我似乎无法为不同的源集分配不同的源/目标兼容性。我知道这是一个奇怪的设置,但是java7代码依赖于一些java7库,而java6代码必须由其他的java6代码加载(超出我的控制范围)。

我一直在尝试使用一个子项目

代码语言:javascript
复制
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-项目的一部分。我也可以这么做..。使用(来自互联网的一些代码)

代码语言:javascript
复制
jar {
  from { 
    project(':java6-module').configurations.archives.allArtifacts.files.collect {
      zipTree(it)
    }
  }
}

但是,当我运行:install任务将库放入本地maven repo时,为java6 7-项目生成的pom对“Java6-模块”具有编译依赖性。

我希望能够用不同的java版本编译不同的代码,同时也将它(或模拟行为)作为一个模块处理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-06 22:39:39

最后,我按照Peter的建议,为我的java6代码使用了一个单独的java6,并在构建文件中添加了如下内容:

代码语言:javascript
复制
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
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23418005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档