rewriter
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.oneapm.agent.android</groupId>
<artifactId>rewriter</artifactId>
<version>5.5.6.1</version>
</dependency><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.oneapm.agent.android</groupId>
<artifactId>oneapm-android-agent</artifactId>
<version>5.5.6.1</version>
</parent>
<artifactId>rewriter</artifactId>
<packaging>jar</packaging>
<build>
<finalName>OneAPM_Rewriter-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/properties</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose/>
<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
<!--jar包改名插件以及相关逻辑 开始 Link:http://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html-->
<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.jar</outputFile>
<relocations>
<!--apache common-->
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>com.blueware.org.apache.commons</shadedPattern>
</relocation>
<!-- reflections-->
<relocation>
<pattern>org.reflections</pattern>
<shadedPattern>com.blueware.org.reflections</shadedPattern>
</relocation>
<!-- dom4j-->
<relocation>
<pattern>org.dom4j</pattern>
<shadedPattern>com.blueware.org.dom4j</shadedPattern>
</relocation>
<!--google.common-->
<relocation>
<pattern>com.google</pattern>
<shadedPattern>com.blueware.com.google</shadedPattern>
</relocation>
<!--google.asm-->
<relocation>
<pattern>org.slf4j</pattern>
<shadedPattern>com.blueware.org.slf4j</shadedPattern>
</relocation>
</relocations>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.blueware.agent.compile.Main</Main-Class>
<Premain-Class>com.blueware.agent.compile.RewriterAgent</Premain-Class>
<Agent-Class>com.blueware.agent.compile.RewriterAgent</Agent-Class>
<Can-Redefine-Classes>true</Can-Redefine-Classes>
<Can-Retransform-Classes>true</Can-Retransform-Classes>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<executions>
<execution>
<!-- 混淆时刻,这里是打包的时候混淆-->
<phase>install</phase>
<goals>
<!-- 使用插件的什么功能: 混淆-->
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 是否将生成的PG文件安装部署-->
<!--<attach>true</attach>-->
<!-- 是否混淆-->
<obfuscate>true</obfuscate>
<!-- 指定生成文件分类 -->
<!--<attachArtifactClassifier>pg</attachArtifactClassifier>-->
<!-- 添加依赖,这里你可以按你的需要修改,这里测试只需要一个JRE的Runtime包就行了 -->
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
<!-- 加载文件的过滤器,就是你的工程目录了-->
<inFilter>**</inFilter>
<!-- 输出目录-->
<outputDirectory>${project.build.directory}</outputDirectory>
<!--<injar>${project.build.finalName}.jar</injar>-->
<injar>${project.build.finalName}-shaded.jar</injar>
<outjar>${project.build.finalName}-pg.jar</outjar>
<options>
<!-- JDK目标版本1.8-->
<option>-target 1.8</option>
<!-- 不做收缩(删除注释、未被引用代码)-->
<option>-dontshrink</option>
<!-- 不做优化(变更代码实现逻辑)-->
<option>-dontoptimize</option>
<!-- 不路过非公用类文件及成员-->
<option>-dontskipnonpubliclibraryclasses</option>
<option>-dontskipnonpubliclibraryclassmembers</option>
<!-- 优化时允许访问并修改有修饰符的类和类的成员 -->
<option>-allowaccessmodification</option>
<!-- 确定统一的混淆类的成员名称来增加混淆-->
<option>-useuniqueclassmembernames</option>
<option>-printmapping ${project.basedir}/src/main/resources/rewriter-proguard-map.txt</option>
<!--保证spring注解能力-->
<!--<option>-keepdirectories</option>-->
<!-- 不混淆所有包名,本人测试混淆后WEB项目问题实在太多,毕竟Spring配置中有大量固定写法的包名-->
<option>-keeppackagenames</option>
<!-- 不混淆所有特殊的类-->
<option>-keepattributes
Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
</option>
<!--不混淆枚举类-->
<option>-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); }</option>
<option>-keep interface **</option>
<!--不混淆com.blueware.agent.compile.^Main^ public static main(java.lang.String[])-->
<option>
-keepclassmembers public class com.blueware.agent.compile.Main {void main(java.lang.String[]);}
</option>
<option>-keep class com.blueware.agent.compile.RewriterAgent</option>
<!--<option>-keep class com.blueware.agent.util.AESOperator</option>-->
<option>-keep class com.google.** {*;}</option>
<option>-keep class javassist.** {*;}</option>
<option>-keep class com.google.** {*;}</option>
<option>-keep class org.** {*;}</option>
<option>-keep class com.blueware.objectweb.** {*;}</option>
<option>-keep class javax.** {*;}</option>
<option>-keep class com.blueware.agent.compile.ClassTransformer** {*;}</option>
<!-- 忽略打包时的告警信息 -->
<option>-ignorewarnings</option>
</options>
</configuration>
</plugin>
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>rename</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<sourceFile>
${project.build.directory}/OneAPM_Rewriter-${project.version}.jar
</sourceFile>
<destinationFile>
${project.build.directory}/OneAPM_Rewriter-${project.version}-original.jar
</destinationFile>
</fileSet>
<fileSet>
<sourceFile>
${project.build.directory}/OneAPM_Rewriter-${project.version}-pg.jar
</sourceFile>
<destinationFile>
${project.build.directory}/OneAPM_Rewriter-${project.version}.jar
</destinationFile>
</fileSet>
</fileSets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<file>${basedir}/src/main/resources/template/ProjectVersion.template</file>
<outputFile>${basedir}/src/main/java/com/blueware/agent/util/ProjectVersion.java</outputFile>
<replacements>
<replacement>
<token>@VERSION@</token>
<value>${project.version}</value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
<file>
<exists>${java.home}/../lib/tools.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${java.home}/../lib/tools.jar</toolsjar>
</properties>
</profile>
<profile>
<id>mac-profile</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<exists>${java.home}/../Classes/classes.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
</properties>
</profile>
<profile>
<!--jcenter仓库地址-->
<id>jcenter</id>
<distributionManagement>
<repository>
<id>bintray-oneapm-android-oneapm-android-agent</id>
<name>oneapm-android-oneapm-android-agent</name>
<url>https://api.bintray.com/maven/oneapm-android/oneapm-android-agent/rewriter/;publish=1</url>
</repository>
</distributionManagement>
<repositories>
</repositories>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.8.0</version>
<scope>system</scope>
<systemPath>${toolsjar}</systemPath>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.8</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.25.0-GA</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0.1</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.oneapm.apm</groupId>
<artifactId>apm-asm</artifactId>
<version>1.3</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
</project>