allator多模块代码混淆

1.由于项目需要私有化部署,为了保证代码的安全性,需要对springboot项目进项代码混淆

官网:http://www.allatori.com/
解压找到 目录: Allatori-7.1-Demo\Allatori-7.4-Demo\tutorial\step01\files
在这里插入图片描述

如果你只有一个项目,并且混淆次数也不多,你也可以通过这种方式,把项目拷贝到这个目录,修改配置文件,手动执行混淆的脚本。

2.多个springboot项目的时候 集成idea代码混淆
项目结构
在这里插入图片描述
pom.xml

 <build>
    <plugins>
      <plugin>
                <!-- springboot打包插件 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <!-- resouces拷贝文件插件 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <!-- 执行这个插件的时候执行申明的所有phase -->
                    <execution>
                        <id>copy-and-filter-allatori-config</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <!-- 这个地方需要注意拷贝的文件位置需要是target目录,target目录是最终打jar包存放的位置 -->
                            <outputDirectory>${basedir}/target</outputDirectory>
                            <resources>
                                <resource>
                                    <!-- 这个地方的文件目录需要注意,网上很多目录都是${basedir}/allatori这个,所以才会需要手动拷贝allatori.xml文件到target/config目录下,有了这个mvn会自动帮我们拷贝了 -->
                                    <directory>src/main/resources/config</directory>
                                    <includes>
                                        <!-- 配置文件文件名 -->
                                        <include>allatori.xml</include>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!-- 代码混淆打包插件 -->
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <id>run-allatori</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <executable>java</executable>
                    <arguments>
                        <argument>-Xms128m</argument>
                        <argument>-Xmx512m</argument>
                        <argument>-jar</argument>
                        <!-- 指定引用的allatori的jar包位置,这里把jar包放在了根目录下的lib目录里 -->
                        <argument>../lib/allatori.jar</argument>
                        <!-- 指定代码混淆时的配置文件,因为是混淆指定的是jar包,jar包位置在target下,所以我们的allatori.xml也需要拷贝到该目录下 -->
                        <argument>${basedir}/target/allatori.xml</argument>
                    </arguments>
                </configuration>
            </plugin>
    </plugins>
  </build>

allatori.xml文件

<config>
    <input>
        <!-- in中是待混淆的jar包,out是混淆后的jar包,路径是相对本配置文件所在位置 -->
        <jar in="web-api-1.0.jar" out="web-obfuscated.jar"/>
    </input>

    <!-- ignore-classes中配置不被混淆的类 -->
    <ignore-classes>
        <!-- 配置了启动相关类不被混淆,保证springboot可以正常启动 -->
        <class template="class *Application*"/>

        <class template="class *springframework*"/>
        <class template="class *alibaba*"/>
        <class template="class *persistence*"/>
        <class template="class *apache*"/>

        <class template="class *model*"/>
        <class template="class *enums*"/>
        <class template="class *repository*"/>
    </ignore-classes>

    <keep-names>
        <!-- 防止部分类、方法、变量找不到名称而报错 -->
        <!-- 所有方法名称不变,parameters="keep"表示方法参数名也不变 -->
        <method template="*(**)" parameters="keep"/>
        <!-- com.a.b.c中的类以及其子包中的类的名称不变 -->
        <!--    <class template="class com.a.b.c.*"/>-->
    </keep-names>

    <property name="log-file" value="log.xml"/>
</config>

打包 mvn package -DskipTests
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下
打包成功如下:
在这里插入图片描述
因为我的idea配置了忽略文件,去文件下看已经多出了混淆之后的文件
在这里插入图片描述
拿去直接可以用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值