【问题标题】:Proguard with JDK 10 / JDK 11 and maven pugin使用 JDK 10 / JDK 11 和 maven pugin 进行 Proguard
【发布时间】:2018-12-14 09:37:56
【问题描述】:

如何使用 JDK 10 / JDK 11 运行 Proguard 并设置 maven 插件?

Migration issues concerning OpenJDK 11 & OpenJFX 11 (& Proguard)

【问题讨论】:

    标签: maven proguard java-10 java-11


    【解决方案1】:

    首先,Proguard 6.0.3 尚未在 Java 11 上运行 (#188 支持 Java 11,参见https://sourceforge.net/p/proguard/feature-requests/188/)。

    您的源代码可以使用 JDK 11 编译。对于 proguard 插件,我们必须使用 JDK 10。

    在 maven-compiler-plugin 中,将版本设置为 JDK 10:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
             <source>10</source>
             <target>10</target>
             <compilerArgs>
                 <arg>--add-modules=[required modules]</arg>
             </compilerArgs>
         </configuration>
    </plugin>
    

    JDK 10 的属性(OpenJDK 很好):

    <properties>
        <java.home.openjdk10>[pathtoJDK20]\jdk-10.0.2</java.home.openjdk10>
    </properties>
    

    proguard-maven-plugin:

    <plugin>
        <groupId>com.github.dingxin</groupId>
        <artifactId>proguard-maven-plugin</artifactId>
        <version>1.0.3</version>
        <executions>
            <execution>
                <id>process-classes-with-proguard</id>
                <phase>test</phase>
                <goals>
                    <goal>proguard</goal>
                </goals>
                <configuration>
                    <options>
                        <option>[proguarg options]</option>
                    </options>
                    <libs>
                        <lib>${java.home.openjdk10}/lib/jrt-fs.jar</lib>
                        <lib>${java.home.openjdk10}/jmods/java.base.jmod(!.jar;!module-info.class)</lib>
                        <lib>${java.home.openjdk10}/jmods/java.compiler.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.corba.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.datatransfer.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.desktop.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.instrument.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.logging.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.management.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.management.rmi.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.naming.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.prefs.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.rmi.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.scripting.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.se.ee.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.se.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.security.jgss.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.security.sasl.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.smartcardio.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.sql.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.sql.rowset.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.transaction.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.xml.bind.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.xml.crypto.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.xml.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.xml.ws.annotation.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/java.xml.ws.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.accessibility.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.aot.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.attach.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.charsets.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.compiler.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.crypto.cryptoki.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.crypto.ec.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.crypto.mscapi.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.dynalink.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.editpad.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.hotspot.agent.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.httpserver.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.incubator.httpclient.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.ed.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.jvmstat.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.le.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.opt.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.vm.ci.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.vm.compiler.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.internal.vm.compiler.management.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jartool.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.javadoc.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jcmd.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jconsole.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jdeps.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jdi.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jdwp.agent.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jlink.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jshell.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jsobject.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.jstatd.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.localedata.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.management.agent.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.management.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.naming.dns.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.naming.rmi.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.net.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.pack.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.rmic.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.scripting.nashorn.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.scripting.nashorn.shell.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.sctp.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.security.auth.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.security.jgss.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.unsupported.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.xml.bind.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.xml.dom.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.xml.ws.jmod</lib>
                        <lib>${java.home.openjdk10}/jmods/jdk.zipfs.jmod</lib>
                    </libs>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    【讨论】:

    • 在 maven-compiler-plugin 中你应该使用&lt;release&gt;10&lt;/release&gt; 而不是源/目标。此外,如果您需要模块,您只需在src/main/java 中添加module-info.java 文件......这真的是proguard-maven-plugin 的方式吗?应该改变它以更好地处理模块......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2019-03-09
    • 2019-01-15
    • 2020-03-12
    • 2020-05-28
    • 2020-09-05
    相关资源
    最近更新 更多