gpt4 book ai didi

带有 Proguard 和程序集插件的 Maven

转载 作者:行者123 更新时间:2023-12-04 12:54:55 25 4
gpt4 key购买 nike

我正在尝试使用具有以下配置的 Maven:

  • 使用 maven-assembly-plugin 构建具有所有依赖项的单个 JAR (assembly:single)。
  • 之后使用 Proguard 插件从包含的库中删除所有不必要的类。

  • 我需要 proguard 来缩小依赖项的大小。我使用的 OpenIMAJ 库很大(100MB),我只需要它的一小部分。

    问题是我当前的 Maven 配置以相反的顺序运行插件 - Proguard 首先运行并构建一个没有依赖项的 JAR。

    我的 pom.xml 的插件部分:
    <plugins>
    <plugin>
    <groupId>com.github.wvengen</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <version>2.0.6</version>
    <executions>
    <execution>
    <phase>package</phase>
    <goals><goal>proguard</goal></goals>
    </execution>
    </executions>
    <dependencies>
    <dependency>
    <groupId>net.sf.proguard</groupId>
    <artifactId>proguard-base</artifactId>
    <version>4.9</version>
    <scope>runtime</scope>
    </dependency>
    </dependencies>
    <configuration>
    <proguardVersion>4.9</proguardVersion>
    <options>
    <option>-verbose</option>
    <option>-dontobfuscate</option>
    <option>-dontoptimize</option>
    <option>-keep class org.apache.** { *; }</option>
    <option>-keep class no.** { *; }</option>
    </options>
    <libs>
    <lib>${java.home}/lib/rt.jar</lib>
    <lib>${java.home}/lib/jsse.jar</lib>
    </libs>
    </configuration>

    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
    <source>1.7</source>
    <target>1.7</target>
    </configuration>
    </plugin>

    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <archive>
    <manifest>
    <mainClass>fully.qualified.MainClass</mainClass>
    </manifest>
    </archive>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    </configuration>
    <executions>
    <execution>
    <id>make-assembly</id> <!-- this is used for inheritance merges -->
    <phase>package</phase> <!-- bind to the packaging phase -->
    <goals>
    <goal>single</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>

    最佳答案

    这两个插件都配置为在 package 上执行阶段。因此,我认为 Maven 会按照它们在 pom.xml 文件中定义的顺序执行它们。 (显然如此,因为 Maven 3.0.3: http://www.mkyong.com/maven/maven-plugin-execution-order-in-same-phase/ )

    您是否尝试按顺序定义它们?

    如果它不起作用,您可能应该尝试在 prepare-package 期间运行程序集插件阶段。

    但是,我的回答仅对订购有值(value),我不确定这是否会帮助您解决整个缩小问题。

    关于带有 Proguard 和程序集插件的 Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846402/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com