0

Mavenを使用してマルチモジュールプロジェクトを構築および難読化しようとしています。シェード プラグインを使用して、独自のクラス ファイル (すべてのモジュール) をすべて含むファット jar を作成し、proguard-maven-plugin を使用してファット jar を難読化し、appassemblyr プラグインを使用して実行可能なビルド出力を作成できるようにします。難読化されたクラスがシェーディングされた jar に既に存在するため、他のモジュールの依存関係も appassemblyr リポジトリ ディレクトリに表示されることを除いて、すべてが機能します。

提供されている他のモジュールの依存関係を定義してから、shade プラグインの依存関係を追加しようとしましたが、shade プラグインはそれらを無視しているようです。

これは、pom.xml の関連部分です。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <outputFile>${project.build.directory}/${project.build.finalName}-shaded.${project.packaging}</outputFile>
                        <artifactSet>
                            <includes>
                                <include>${project.groupId}:*</include>
                            </includes>
                        </artifactSet>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>module-a</artifactId>
                    <version>${project.version}</version>
                </dependency>
                <dependency>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>module-b</artifactId>
                    <version>${project.version}</version>
                </dependency>
            </dependencies>
        </plugin>

        <plugin>
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <version>2.0.13</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>proguard</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <injar>${project.build.finalName}-shaded.${project.packaging}</injar>
                <outjar>${project.build.finalName}.${project.packaging}</outjar>
                <proguardInclude>proguard.pro</proguardInclude>
                <maxMemory>1024m</maxMemory>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                    <lib>${java.home}/lib/jce.jar</lib>
                </libs>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>2.0.0</version>
            <executions>
                <execution>
                    <id>assemble</id>
                    <phase>package</phase>
                    <goals>
                        <goal>assemble</goal>
                    </goals>
                    <configuration>
                        <programs>
                            <program>
                                <mainClass>my.package.Application</mainClass>
                            </program>
                        </programs>
                        <useWildcardClassPath>true</useWildcardClassPath>
                        <repositoryLayout>flat</repositoryLayout>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

どんなアイデアでも大歓迎です。

4

2 に答える 2

0

あなたの問題は、影付きの jar と appassemblyr が同じフェーズpackageで実行されるという事実に起因すると思います。

appassemblyr プラグインのフェーズを次のように変更する必要があると思います。

<phase>post-package</phase>
于 2017-02-28T14:03:48.073 に答える