【问题标题】:Obfuscating a project dependent on a war混淆依赖战争的项目
【发布时间】:2018-02-14 08:27:26
【问题描述】:

我想使用 ProGuard(项目 A)混淆项目(jar)。但是,这个项目依赖于另一个战争(Project B),并使用了我在 B 中开发的一些类。 我使用了这个问题的解决方案:Build a jar from a maven project dependent on other project 但它不起作用,当我使用命令时 maven clean install -X 在项目 A 上我收到错误:

error: cannot find symbol

error: package com.example does not exist

如何混淆这个 jar?

编辑 1

在项目 A 的 POM 中,我有:

  1. 我的战争依赖:

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>myWarProject</artifactId>
        <version>1.0.0-BUILD-SNAPSHOT</version>
    </dependency>
    
  2. 在构建部分:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <finalName>DeviceListener</finalName>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <manifestEntries>
                                    <Main-Class>com.example.main.Main</Main-Class>
                                    <Build-Number>1</Build-Number>
                                </manifestEntries>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    

在项目 B 中,我有:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <attachClasses>true</attachClasses>
            </configuration>
        </plugin>

【问题讨论】:

  • 您是否从您的战争项目中生成了一个类 jar?
  • @khmarbaise 你的意思是像这个链接吗? stackoverflow.com/questions/10862980/maven-generate-jar-and-war
  • 战争依赖必须包含一个分类器,默认为classes...
  • @khmarbaise 我不明白。我应该如何使用它?
  • 我错过了您需要在 maven-war-plugin 配置中添加 &lt;archiveClasses&gt;true&lt;/archiveClasses&gt; 的内容...另请参阅我对答案的编辑...

标签: java spring maven proguard obfuscation


【解决方案1】:

我的意思是创建一个战争项目中的类的 jar,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <attachClasses>true</attachClasses>
                <archiveClasses>true</archiveClasses>
            </configuration>
        </plugin>
    </plugins>
</build>

这会生成一个补充 jar 文件,其中包含可用作依赖项的 war 项目的类(不要忘记定义分类器)..

你需要像这样改变你的依赖:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>myWarProject</artifactId>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <classifier>classes</classifier>
</dependency>

【讨论】:

  • 是的,我已经尝试过了,但仍然遇到同样的错误。
  • 非常感谢,虽然我收到了错误代码 403,现在已禁止。考虑到项目都在同一个工作区中,为什么会发生这种情况?感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多