在Java11桌面应用程序中使用maven proguard

在Java11桌面应用程序中使用maven proguard,java,maven,proguard,proguard-maven-plugin,Java,Maven,Proguard,Proguard Maven Plugin,我知道这个问题已经被问过很多次了,事实上我用它来将proguard添加到我的pom文件中。我不明白的一件事是,当我运行mvn clean install package命令时,我的jar是在target下生成的,但我没有看到与proguard或jar大小变化相关的任何内容 下面是我的pom文件 <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4

我知道这个问题已经被问过很多次了,事实上我用它来将proguard添加到我的
pom文件中。我不明白的一件事是,当我运行
mvn clean install package
命令时,我的
jar
是在
target
下生成的,但我没有看到与
proguard
jar
大小变化相关的任何内容

下面是我的pom文件

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>app</groupId>
<artifactId>App</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>app</name>


<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <log4j.version>2.11.2</log4j.version>
    <disruptor.version>3.4.2</disruptor.version>
    <tool.proguard.version>6.1.1</tool.proguard.version>
</properties>




<dependencies>
    <!-- apache commons-lang3 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.9</version>
    </dependency>

    <!-- apache codec -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.2</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.controlsfx/controlsfx -->
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>8.40.14</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/com.github.virtuald/curvesapi -->
    <dependency>
        <groupId>com.github.virtuald</groupId>
        <artifactId>curvesapi</artifactId>
        <version>1.04</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/de.jensd/fontawesomefx -->
    <dependency>
        <groupId>de.jensd</groupId>
        <artifactId>fontawesomefx</artifactId>
        <version>8.9</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.jfoenix/jfoenix -->
    <dependency>
        <groupId>com.jfoenix</groupId>
        <artifactId>jfoenix</artifactId>
        <version>8.0.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.4.1.jre12</version>
        <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.reactivestreams/reactive-streams -->
    <dependency>
        <groupId>org.reactivestreams</groupId>
        <artifactId>reactive-streams</artifactId>
        <version>1.0.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/stax/stax-api -->
    <dependency>
        <groupId>stax</groupId>
        <artifactId>stax-api</artifactId>
        <version>1.0.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>2.6.0</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
    </dependency>


    <!-- Rx java -->
    <dependency>
        <groupId>io.reactivex.rxjava2</groupId>
        <artifactId>rxjava</artifactId>
        <version>2.2.8</version>
    </dependency>

    <dependency>
        <groupId>io.reactivex</groupId>
        <artifactId>rxjavafx</artifactId>
        <version>2.0.2</version>
    </dependency>


    <!--slf4j -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j.version}</version>
    </dependency>

    <!-- https://logging.apache.org/log4j/2.x/manual/async.html -->
    <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>${disruptor.version}</version>
    </dependency>



    <!--EclipseLink-->
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.7.4</version>
    </dependency>


    <!-- JAXWS for Java 11 -->
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.1</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
        <version>2.3.1</version>
    </dependency>

    <!-- JavaFx-->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>13-ea+13</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>13-ea+13</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>13-ea+13</version>
    </dependency>

    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>13-ea+13</version>
        <classifier>win</classifier>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>12.0.2</version>
        <classifier>linux</classifier>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>13-ea+13</version>
        <classifier>mac</classifier>
    </dependency>


    <!-- Gson-->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>


    <!-- Javax libs-->
    <dependency>
        <groupId>javax.json.bind</groupId>
        <artifactId>javax.json.bind-api</artifactId>
        <version>1.0</version>
    </dependency>



    <!-- https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api -->
    <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>2.3.0</version>
    </dependency>

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/net.sf.proguard/proguard-base -->

    <dependency>
        <groupId>net.sf.proguard</groupId>
        <artifactId>proguard-base</artifactId>
        <version>${tool.proguard.version}</version>
    </dependency>
</dependencies>



<build>
    <finalName>App</finalName>
    <pluginManagement>
        <!--
         lock down plugins versions to avoid using Maven defaults (may be moved to parent pom)
        -->
        <plugins>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <!--
            see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging
           -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.2</version>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>


            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.0.13</version>
                <executions>
                    <execution>
                        <id>obfuscation-packaging</id>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                        <configuration>
                            <proguardVersion>${tool.proguard.version}</proguardVersion>
                            <obfuscate>true</obfuscate>
                            <attach>true</attach>
                            <appendClassifier>false</appendClassifier>
                            <addMavenDescriptor>true</addMavenDescriptor>
                            <injar>${project.build.finalName}.jar</injar>
                            <outjar>${project.build.finalName}-small.jar</outjar>
                            <outputDirectory>${project.build.directory}</outputDirectory>
                            <injarNotExistsSkip>false</injarNotExistsSkip>
                            <libs>
                                <lib>${java.home}/lib/rt.jar</lib>
                            </libs>

                            <options>
                                <option>-keepdirectories</option>
                                <option>-keeppackagenames org.apache.maven.plugin.my.MyMojo</option>
                                <option>-keepnames class * implements org.apache.maven.plugin.AbstractMojo</option>
                                <option>-keepclassmembers class * implements org.apache.maven.plugin.AbstractMojo {
                                    private <![CDATA[<fields>]]>;
                                    private <![CDATA[<methods>]]>;
                                    }
                                </option>
                                <option>-keepparameternames</option>
                                <option>-renamesourcefileattribute SourceFile</option>
                                <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                                    SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
                                </option>
                                <option>-target 11</option>
                                <option>-keep public class * {
                                    public protected *;
                                    }
                                </option>
                                <option>-keepclassmembernames class * {
                                    java.lang.Class class$(java.lang.String);
                                    java.lang.Class class$(java.lang.String, boolean);
                                    }
                                </option>
                                <option>-keepclasseswithmembernames,includedescriptorclasses class * {
                                    native <![CDATA[<methods>]]>;
                                    }
                                </option>
                                <option>-keepclassmembers,allowoptimization enum * {
                                    public static **[] values();
                                    public static ** valueOf(java.lang.String);
                                    }
                                </option>
                                <option>-keepclassmembers class * implements java.io.Serializable {
                                    static final long serialVersionUID;
                                    private static final java.io.ObjectStreamField[] serialPersistentFields;
                                    private void writeObject(java.io.ObjectOutputStream);
                                    private void readObject(java.io.ObjectInputStream);
                                    java.lang.Object writeReplace();
                                    java.lang.Object readResolve();
                                    }
                                </option>
                            </options>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>${tool.proguard.version}</version>
                    </dependency>
                </dependencies>
            </plugin>


            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.2</version>
            </plugin>
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
            </plugin>
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.3</version>
            <configuration>
                <mainClass>a.main.Main</mainClass>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.2</version>
            <configuration>
                <archive>
                    <manifestFile>
                        ${project.build.outputDirectory}/META-INF/MANIFEST.MF
                    </manifestFile>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>a.main.Launcher</mainClass>
                        <classpathPrefix>${project.build.directory}/dependency-jars/</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>



        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>a.main.Launcher</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.5.1</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <id>create-my-bundle</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>

                        <archive>
                            <manifestFile>
                                ${project.build.outputDirectory}/META-INF/MANIFEST.MF
                            </manifestFile>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <mainClass>a.main.Launcher</mainClass>
                                <classpathPrefix>${project.build.directory}/dependency-jars/</classpathPrefix>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

4.0.0
应用程序
应用程序
1.0-快照
罐子
应用程序
UTF-8
11
11
2.11.2
3.4.2
6.1.1
org.apache.commons
commons-lang3
3.9
通用编解码器
通用编解码器
1.10
org.apache.commons
公共集合4
4.2
org.controlsfx
controlsfx
8.40.14
com.github.virtuald
曲线萨皮
1.04
德詹斯
fontawesomefx
8.9
com.jfoenix
杰福尼克斯
8.0.1
com.microsoft.sqlserver
mssql jdbc
7.4.1.jre12
测试
org.apache.poi
poi
3.17
org.apache.poi
poi ooxml
3.17
org.apache.poi
poi ooxml模式
3.17
org.reactivestreams
反应流
1.0.2
斯塔克斯
斯塔克斯api
1.0.1
org.apache.xmlbeans
xmlbeans
2.6.0
javax.persistence
javax.persistence-api
2.2
io.reactivex.rxjava2
rxjava
2.2.8
io.reactivex
rxjavafx
2.0.2
org.apache.logging.log4j
log4j-slf4j-impl
${log4j.version}
org.apache.logging.log4j
log4japi
${log4j.version}
org.apache.logging.log4j
log4j型芯
${log4j.version}
com.lmax
破坏者
${disruptor.version}
org.eclipse.persistence
日食
2.7.4
com.sun.xml.ws
jaxws-rt
2.3.1
聚甲醛
com.sun.xml.ws
rt
2.3.1
org.openjfx
javafx库
13 ea+13
org.openjfx
javafx控件
13 ea+13
org.openjfx
javafx-fxml
13 ea+13
org.openjfx
javafx图形
13 ea+13
赢
org.openjfx
javafx图形
12.0.2
linux
org.openjfx
javafx图形
13 ea+13
雨衣
com.google.code.gson
格森
2.8.5
javax.json.bind
javax.json.bind-api
1
javax.xml.ws
JAXWSAPI
2.3.0
javax.xml.bind
jaxb api
2.3.0
com.sun.xml.bind
jaxb impl
2.3.0
javax.activation
激活
1.1.1
net.sf.proguard
前卫基地
${tool.proguard.version}
应用程序
maven清洁插件
3.1.0
maven资源插件
3.0.2
maven编译器插件
3.8.0
11
com.github.wvengen
proguard maven插件
2.0.13
模糊包装
包裹
前卫
${tool.proguard.version}
真的
真的
假的
真的
${project.build.finalName}.jar
${project.build.finalName}-small.jar
${project.build.directory}
假的
${java.home}/lib/rt.jar
-保留董事
-keeppackagenames org.apache.maven.plugin.my.MyMojo
-keepnames类*实现org.apache.maven.plugin.AbstractMojo
-keepclassmembers类*实现org.apache.maven.plugin.AbstractMojo{
私人]]>;
私人]]>;
}
-基帕参数
-重命名SourceFileAttribute源文件
-keepattributes异常、内部类、签名、已弃用、,
SourceFile,LineNumberTable,*注释*,封闭方法
-具体目标11
-保持公开课*{
受公众保护*;
}
-keepclassmembernames类*{
java.lang.Class类$(java.lang.String);
java.lang.Class类$(java.lang.String,布尔值);
}