波多野结衣 蜜桃视频,国产在线精品露脸ponn,a v麻豆成人,AV在线免费小电影

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了在Gradle中編譯一個JDK 8項目+一個JDK 9模塊-info.java的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在開發一個面向JDK 8的Java庫,我正在使用OpenJDK 11在Gradle 5中構建它。為了面向JDK 8,我是javac的--release選項。

但是,我也希望我的庫與JPMS兼容。換句話說:

我想提供一個用--release 9(Stephen Colebourne’s scale中的選項3)編譯的module-info.class
而其余所有內容都是用--release 8編譯的。

MCVE

build.gradle

plugins {
    id 'java'
    id 'org.javamodularity.moduleplugin' version '1.4.1' // *
}

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.6'
}

compileJava.options.compilerArgs.addAll(['--release', '9']) // **

*org.javamodularity.moduleplugin集合--module-pathForcompileJava

**尚無適用于--release的Gradle DSL:#2510

src/main/java/module-info.java

module pl.tlinkowski.sample {
  requires lombok;
  exports pl.tlinkowski.sample;
}

src/main/java/pl/tlinkowski/sample/Sample.java

package pl.tlinkowski.sample;

@lombok.Value
public class Sample {
  int sample;
}

此MCVE已編譯,但所有類(而不僅僅是module-info.class)都是JDK 9類格式(v.53)。

其他生成工具

我想做的事情在以下位置肯定是可能的:

    Maven

    例如ThreeTen-Extra(他們的方法歸結為:先用--release 9編譯所有東西,然后用--release 8編譯除了module-info.java以外的所有東西)。

    螞蟻

    例如Lombok(他們的方法歸結為:將module-info.java放在單獨的”源集合”中–主源集合用--release 8編譯,模塊信息源集用--release 9編譯)。

我嘗試的內容

我喜歡Lombok的方法,所以我對build.gradle中的源集進行了如下操作:

sourceSets {
    main { // all but module-info
        java {
            exclude 'module-info.java'
        }
    }
    mainModuleInfo { // module-info only
        java {
            srcDirs = ['src/main/java']
            outputDir = file("$buildDir/classes/java/main")
            include 'module-info.java'
        }
    }
}

然后,我配置了一個任務依賴項,并向兩個編譯任務添加了適當的--release選項:

classes.dependsOn mainModuleInfoClasses

compileJava.options.compilerArgs.addAll(['--release', '8'])
compileMainModuleInfoJava.options.compilerArgs.addAll(['--release', '9'])

如果我現在編譯,我會得到:

錯誤:Lombok包不存在

所以我仍然不知道如何指導org.javamodularity.moduleplugin

不使用--module-pathmain
mainModuleInfo設置正確的--module-path

推薦答案

編輯:自1.5.0版本起,Gradle模塊插件現在支持此功能。

這里是一個工作的build.gradle片段:

plugins {
    id 'java'
    id 'org.javamodularity.moduleplugin' version '1.5.0'
}

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.6'
}

modularity.mixedJavaRelease 8

好的,我設法讓它工作了:

    禁用org.javamodularity.moduleplugin
    正在刪除自定義源集(不需要)
    添加自定義compileModuleInfoJava任務并將其--module-path設置為compileJava任務的類路徑(靈感來自this Gradle manual)

以下是build.gradle的完整源代碼:

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.6'
}

compileJava {
    exclude 'module-info.java'

    options.compilerArgs = ['--release', '8']
}

task compileModuleInfoJava(type: JavaCompile) {
    classpath = files() // empty
    source = 'src/main/java/module-info.java'
    destinationDir = compileJava.destinationDir // same dir to see classes compiled by compileJava

    doFirst {
        options.compilerArgs = [
                '--release', '9',
                '--module-path', compileJava.classpath.asPath,
        ]
    }
}

compileModuleInfoJava.dependsOn compileJava
classes.dependsOn compileModuleInfoJava

備注:

它編譯

分享到:
標簽:Gradle info Java JDK 模塊 編譯 項目
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定