From 6e0d1d51916e4f41e06c06e984a70ebd08352d95 Mon Sep 17 00:00:00 2001
From: houzhongjian <houzhongyi@126.com>
Date: 星期四, 26 六月 2025 09:35:49 +0800
Subject: [PATCH] 打包加密jar包配置

---
 iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java                   |    1 
 iailab-module-ai/iailab-module-ai-biz/pom.xml                                                                             |   58 ++++++++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/collector/RSACertHelper.java |    3 
 iailab-module-infra/iailab-module-infra-biz/src/main/resources/application-dev.yaml                                       |    2 
 iailab-module-system/iailab-module-system-biz/pom.xml                                                                     |  221 ++++++++++++++++++++++---------
 iailab-module-data/iailab-module-data-biz/pom.xml                                                                         |   84 ++++++++++++
 6 files changed, 300 insertions(+), 69 deletions(-)

diff --git a/iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java b/iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java
index 161b2f8..469f41b 100644
--- a/iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java
+++ b/iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java
@@ -1,7 +1,6 @@
 package com.iailab.framework.excel.core.util;
 
 import com.alibaba.excel.EasyExcelFactory;
-import com.alibaba.excel.write.handler.AbstractRowWriteHandler;
 import com.iailab.framework.excel.core.handler.SelectSheetWriteHandler;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.converters.longconverter.LongStringConverter;
diff --git a/iailab-module-ai/iailab-module-ai-biz/pom.xml b/iailab-module-ai/iailab-module-ai-biz/pom.xml
index 395215c..56e8c3c 100644
--- a/iailab-module-ai/iailab-module-ai-biz/pom.xml
+++ b/iailab-module-ai/iailab-module-ai-biz/pom.xml
@@ -110,6 +110,64 @@
                     </execution>
                 </executions>
             </plugin>
+            <!--
+            class-winter插件
+            注:自Maven3.0.3起, 绑定到同一phase的Maven插件将按照pom.xml中声明的顺序执行
+            注:此插件最好放置在同一phase的最后执行。
+            注:此插件不具备打包功能,需要在此插件前有打包插件进行项目打包,否则加密不会生效。
+            -->
+            <plugin>
+                <groupId>com.idea-aedi</groupId>
+                <artifactId>class-winter-maven-plugin</artifactId>
+                <version>2.9.6</version>
+                <!-- 相关配置 -->
+                <configuration>
+                    <!-- <finalName></finalName>-->
+                    <includePrefix>com.iailab</includePrefix>
+                    <originJarOrWar>${project.build.directory}/${project.build.finalName}.jar</originJarOrWar>
+                    <excludePrefix>
+                        com.iailab.module.ai.AiServerApplication,
+                        org.springframework,
+                        org.apache,
+                        javax,
+                        java,
+                        com.alibaba,
+                        io.swagger,
+                        cn.hutool,
+                        org.yaml.snakeyaml
+                    </excludePrefix>
+                    <password>123123123</password>
+                    <supportFile>${project.basedir}/dependency</supportFile>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>class-winter</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-dependency-plugin</artifactId>-->
+<!--                <version>3.6.1</version>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <id>copy-dependencies</id>-->
+<!--                        <phase>package</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>copy-dependencies</goal>-->
+<!--                        </goals>-->
+<!--                        <configuration>-->
+<!--                            <outputDirectory>${project.build.directory}/lib</outputDirectory>-->
+<!--                            <overWriteReleases>false</overWriteReleases>-->
+<!--                            <overWriteSnapshots>false</overWriteSnapshots>-->
+<!--                            <overWriteIfNewer>true</overWriteIfNewer>-->
+<!--                        </configuration>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
diff --git a/iailab-module-data/iailab-module-data-biz/pom.xml b/iailab-module-data/iailab-module-data-biz/pom.xml
index e92acd3..696b87b 100644
--- a/iailab-module-data/iailab-module-data-biz/pom.xml
+++ b/iailab-module-data/iailab-module-data-biz/pom.xml
@@ -248,6 +248,12 @@
             <groupId>com.iailab</groupId>
             <artifactId>iailab-common-protection</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.openjdk.nashorn</groupId>
+            <artifactId>nashorn-core</artifactId>
+            <version>15.4</version>
+        </dependency>
         <!--        <dependency>-->
 <!--            <groupId>org.springframework.amqp</groupId>-->
 <!--            <artifactId>spring-rabbit</artifactId>-->
@@ -272,6 +278,84 @@
                     </execution>
                 </executions>
             </plugin>
+
+            <!--
+            class-winter插件
+            注:自Maven3.0.3起, 绑定到同一phase的Maven插件将按照pom.xml中声明的顺序执行
+            注:此插件最好放置在同一phase的最后执行。
+            注:此插件不具备打包功能,需要在此插件前有打包插件进行项目打包,否则加密不会生效。
+            -->
+            <plugin>
+                <groupId>com.idea-aedi</groupId>
+                <artifactId>class-winter-maven-plugin</artifactId>
+                <version>2.9.6</version>
+                <!-- 相关配置 -->
+                <configuration>
+                    <!-- <finalName></finalName>-->
+                    <includePrefix>com.iailab</includePrefix>
+                    <originJarOrWar>${project.build.directory}/${project.build.finalName}.jar</originJarOrWar>
+                    <excludePrefix>
+                        com.iailab.DataWebApplication,
+                        org.springframework,
+                        org.apache,
+                        javax,
+                        java,
+                        com.alibaba,
+                        io.swagger,
+                        cn.hutool,
+                        org.yaml.snakeyaml
+                    </excludePrefix>
+                    <!-- <includeXmlPrefix></includeXmlPrefix>-->
+                    <!-- <excludeXmlPrefix></excludeXmlPrefix>-->
+                    <!-- <toCleanXmlChildElementName></toCleanXmlChildElementName>-->
+                    <password>123123123</password>
+                    <!-- <includeLibs></includeLibs>-->
+                    <!-- <alreadyProtectedRootDir></alreadyProtectedRootDir>-->
+                    <!-- <alreadyProtectedLibs></alreadyProtectedLibs>-->
+                    <supportFile>${project.basedir}/dependency</supportFile>
+                    <!-- <jvmArgCheck></jvmArgCheck>-->
+                    <!-- <tips></tips>-->
+                    <!-- <debug></debug>-->
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>class-winter</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-dependency-plugin</artifactId>-->
+<!--                <version>3.6.1</version>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <id>copy-dependencies</id>-->
+<!--                        <phase>package</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>copy-dependencies</goal>-->
+<!--                        </goals>-->
+<!--                        <configuration>-->
+<!--                            <outputDirectory>${project.build.directory}/lib</outputDirectory>-->
+<!--                            <overWriteReleases>false</overWriteReleases>-->
+<!--                            <overWriteSnapshots>false</overWriteSnapshots>-->
+<!--                            <overWriteIfNewer>true</overWriteIfNewer>-->
+<!--                        </configuration>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/collector/RSACertHelper.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/collector/RSACertHelper.java
index fb094c9..58139cc 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/collector/RSACertHelper.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/collector/RSACertHelper.java
@@ -1,6 +1,7 @@
 package com.iailab.module.data.channel.opcua.collector;
 
-import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
+
+import cn.hutool.core.codec.Base64;
 
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
diff --git a/iailab-module-infra/iailab-module-infra-biz/src/main/resources/application-dev.yaml b/iailab-module-infra/iailab-module-infra-biz/src/main/resources/application-dev.yaml
index f40396d..8b1bf4d 100644
--- a/iailab-module-infra/iailab-module-infra-biz/src/main/resources/application-dev.yaml
+++ b/iailab-module-infra/iailab-module-infra-biz/src/main/resources/application-dev.yaml
@@ -78,7 +78,7 @@
 spring:
   # RabbitMQ 配置项,对应 RabbitProperties 配置类
   rabbitmq:
-    host: 172.16.8.200 # RabbitMQ 服务的地址
+    host: 172.16.1.221 # RabbitMQ 服务的地址
     port: 5672 # RabbitMQ 服务的端口
     username: admin # RabbitMQ 服务的账号
     password: admin123 # RabbitMQ 服务的密码
diff --git a/iailab-module-system/iailab-module-system-biz/pom.xml b/iailab-module-system/iailab-module-system-biz/pom.xml
index f8487d8..1579f51 100644
--- a/iailab-module-system/iailab-module-system-biz/pom.xml
+++ b/iailab-module-system/iailab-module-system-biz/pom.xml
@@ -150,72 +150,72 @@
         <finalName>${project.artifactId}</finalName>
         <plugins>
             <!-- 步骤1:在prepare-package阶段加密YAML文件 -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>3.0.0</version>
-                <executions>
-                    <execution>
-                        <id>encrypt-yaml-files</id>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                        <configuration>
-                            <target>
-                                <!-- 对target/classes下的所有YAML文件进行Base64编码(实际使用应替换为加密算法) -->
-                                <echo message="Encrypting YAML files..." />
-                                <apply executable="base64" dest="${project.build.outputDirectory}" verbose="true">
-                                    <fileset dir="${project.build.outputDirectory}" includes="**/*.yml, **/*.yaml"/>
-                                    <mapper type="glob" from="*" to="*" />
-                                    <srcfile/>
-                                </apply>
-                                <!-- 实际项目中应使用Java/Groovy脚本实现加密 -->
-                            </target>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- 步骤2:使用ProGuard混淆代码 -->
-            <plugin>
-                <groupId>com.github.wvengen</groupId>
-                <artifactId>proguard-maven-plugin</artifactId>
-                <version>2.7.0</version>
-                <executions>
-                    <!-- 以下配置说明执行mvn的package命令时候,会执行proguard-->
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>proguard</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <!-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 -->
-                    <injar>${project.build.finalName}.jar</injar>
-                    <!-- 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 -->
-                    <outjar>${project.build.finalName}.jar</outjar>
-                    <!-- 是否混淆 默认是true -->
-                    <obfuscate>true</obfuscate>
-                    <putLibraryJarsInTempDir>true</putLibraryJarsInTempDir>
-                    <!-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 -->
-                    <proguardInclude>${project.basedir}/proguard.cfg</proguardInclude>
-                    <!-- 额外的jar包,通常是项目编译所需要的jar -->
-                    <libs>
-                        <lib>${java.home}/lib/rt.jar</lib>
-                        <lib>${java.home}/lib/jce.jar</lib>
-                        <lib>${java.home}/lib/jsse.jar</lib>
-                    </libs>
-                    <!-- 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 -->
-                    <inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter>
-                    <!-- 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar -->
-                    <outputDirectory>${project.basedir}/target</outputDirectory>
-                    <!--这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆-->
-                    <options>
-                        <!-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 -->
-                    </options>
-                </configuration>
-            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-antrun-plugin</artifactId>-->
+<!--                <version>3.0.0</version>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <id>encrypt-yaml-files</id>-->
+<!--                        <phase>prepare-package</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>run</goal>-->
+<!--                        </goals>-->
+<!--                        <configuration>-->
+<!--                            <target>-->
+<!--                                &lt;!&ndash; 对target/classes下的所有YAML文件进行Base64编码(实际使用应替换为加密算法) &ndash;&gt;-->
+<!--                                <echo message="Encrypting YAML files..." />-->
+<!--                                <apply executable="base64" dest="${project.build.outputDirectory}" verbose="true">-->
+<!--                                    <fileset dir="${project.build.outputDirectory}" includes="**/*.yml, **/*.yaml"/>-->
+<!--                                    <mapper type="glob" from="*" to="*" />-->
+<!--                                    <srcfile/>-->
+<!--                                </apply>-->
+<!--                                &lt;!&ndash; 实际项目中应使用Java/Groovy脚本实现加密 &ndash;&gt;-->
+<!--                            </target>-->
+<!--                        </configuration>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
+<!--            &lt;!&ndash; 步骤2:使用ProGuard混淆代码 &ndash;&gt;-->
+<!--            <plugin>-->
+<!--                <groupId>com.github.wvengen</groupId>-->
+<!--                <artifactId>proguard-maven-plugin</artifactId>-->
+<!--                <version>2.7.0</version>-->
+<!--                <executions>-->
+<!--                    &lt;!&ndash; 以下配置说明执行mvn的package命令时候,会执行proguard&ndash;&gt;-->
+<!--                    <execution>-->
+<!--                        <phase>package</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>proguard</goal>-->
+<!--                        </goals>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--                <configuration>-->
+<!--                    &lt;!&ndash; 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 &ndash;&gt;-->
+<!--                    <injar>${project.build.finalName}.jar</injar>-->
+<!--                    &lt;!&ndash; 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 &ndash;&gt;-->
+<!--                    <outjar>${project.build.finalName}.jar</outjar>-->
+<!--                    &lt;!&ndash; 是否混淆 默认是true &ndash;&gt;-->
+<!--                    <obfuscate>true</obfuscate>-->
+<!--                    <putLibraryJarsInTempDir>true</putLibraryJarsInTempDir>-->
+<!--                    &lt;!&ndash; 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 &ndash;&gt;-->
+<!--                    <proguardInclude>${project.basedir}/proguard.cfg</proguardInclude>-->
+<!--                    &lt;!&ndash; 额外的jar包,通常是项目编译所需要的jar &ndash;&gt;-->
+<!--                    <libs>-->
+<!--                        <lib>${java.home}/lib/rt.jar</lib>-->
+<!--                        <lib>${java.home}/lib/jce.jar</lib>-->
+<!--                        <lib>${java.home}/lib/jsse.jar</lib>-->
+<!--                    </libs>-->
+<!--                    &lt;!&ndash; 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 &ndash;&gt;-->
+<!--                    <inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter>-->
+<!--                    &lt;!&ndash; 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar &ndash;&gt;-->
+<!--                    <outputDirectory>${project.basedir}/target</outputDirectory>-->
+<!--                    &lt;!&ndash;这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆&ndash;&gt;-->
+<!--                    <options>-->
+<!--                        &lt;!&ndash; 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 &ndash;&gt;-->
+<!--                    </options>-->
+<!--                </configuration>-->
+<!--            </plugin>-->
             <!-- 打包 -->
             <plugin>
                 <groupId>org.springframework.boot</groupId>
@@ -229,6 +229,95 @@
                     </execution>
                 </executions>
             </plugin>
+            <!--
+            class-winter插件
+            注:自Maven3.0.3起, 绑定到同一phase的Maven插件将按照pom.xml中声明的顺序执行
+            注:此插件最好放置在同一phase的最后执行。
+            注:此插件不具备打包功能,需要在此插件前有打包插件进行项目打包,否则加密不会生效。
+            -->
+            <plugin>
+                <groupId>com.idea-aedi</groupId>
+                <artifactId>class-winter-maven-plugin</artifactId>
+                <version>2.9.6</version>
+                <!-- 相关配置 -->
+                <configuration>
+                    <!-- <finalName></finalName>-->
+                    <includePrefix>com.iailab</includePrefix>
+                    <originJarOrWar>${project.build.directory}/${project.build.finalName}.jar</originJarOrWar>
+                     <excludePrefix>
+                         com.iailab.module.system.SystemServerApplication,
+                         org.springframework,
+                         org.apache,
+                         javax,
+                         java,
+                         com.alibaba,
+                         io.swagger,
+                         cn.hutool,
+                         org.yaml.snakeyaml
+                     </excludePrefix>
+                    <!-- <includeXmlPrefix></includeXmlPrefix>-->
+                    <!-- <excludeXmlPrefix></excludeXmlPrefix>-->
+                    <!-- <toCleanXmlChildElementName></toCleanXmlChildElementName>-->
+                     <password>123123123</password>
+                    <!-- <includeLibs></includeLibs>-->
+                    <!-- <alreadyProtectedRootDir></alreadyProtectedRootDir>-->
+                    <!-- <alreadyProtectedLibs></alreadyProtectedLibs>-->
+                     <supportFile>${project.basedir}/dependency/</supportFile>
+                    <!-- <jvmArgCheck></jvmArgCheck>-->
+                    <!-- <tips></tips>-->
+                    <!-- <debug></debug>-->
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>class-winter</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-shade-plugin</artifactId>-->
+<!--                <version>3.2.4</version>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <phase>package</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>shade</goal>-->
+<!--                        </goals>-->
+<!--                        <configuration>-->
+<!--                            <transformers>-->
+<!--                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">-->
+<!--                                    <mainClass>com.iailab.module.system.config.ConfigEncryptor</mainClass>-->
+<!--                                </transformer>-->
+<!--                            </transformers>-->
+<!--                        </configuration>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
+
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-dependency-plugin</artifactId>-->
+<!--                <version>3.6.1</version>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <id>copy-dependencies</id>-->
+<!--                        <phase>package</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>copy-dependencies</goal>-->
+<!--                        </goals>-->
+<!--                        <configuration>-->
+<!--                            <outputDirectory>${project.build.directory}/lib</outputDirectory>-->
+<!--                            <overWriteReleases>false</overWriteReleases>-->
+<!--                            <overWriteSnapshots>false</overWriteSnapshots>-->
+<!--                            <overWriteIfNewer>true</overWriteIfNewer>-->
+<!--                        </configuration>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
 
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

--
Gitblit v1.9.3