ant打包和jar包混淆

Ant是一种基于Java的build工具。相似于c语言中的makefile,这里做一记录。方便后面查看。

<?xml version="1.0" encoding="UTF-8"?>
<project name="vailidategame" default="yguard" basedir=".">
    <property name="src" value="${basedir}/src" />
    <property name="lib" value="${basedir}/lib" />
    <property name="build" value="${basedir}/build" />
    <property name="build.class" value="${build}/classes" />
	<property name="app.name" value="FrameWork" />
    <property name="app.jar" value="${app.name}.jar" />
    <property name="obfuscationlog" value="${build}"/>
    <property name="obf.jar" value="${app.name}_obf.jar" />
    <property name="obfjarpath" value="${basedir}/lib"/>
    <property name="shrinklog" value="${project_name}_shrinklog.xml"/>
    <property name="renamelog" value="${project_name}_renamelog.xml"/>
    <!--请将以下的路径改为你本地的路径-->
    <property name="webserver" value="D:\build-tomcat\webapps" /> 

    <!--定义CLASSPACH,编译时用到你外部增加的包-->
   <!--  <path id="classpath">
        <pathelement location="${src}" />
        <fileset dir="${lib}" includes="***.jar" />
    </path> -->

    <!--删除任务-->
    <target name="clean" description="删除">
        <echo message="删除文件夹" />
        <delete dir="${build}" />
    </target>  

    <!--创建一个暂时文件夹-->
    <target name="init" description="创建文件夹" depends="clean">
        <echo message="创建文件夹--以运行" />
        <mkdir dir="${build.class}" />
    </target>  

    <!-- 编译 -->
    <target name="compile" description="開始编译" depends="init">
           <echo message="生成jar開始……" />
    	   <javac srcdir="src" destdir="${build.class}">
		    	 <!-- <classpath>
		             <fileset dir="lib">
		                 <include name="**/*.jar"/>
		             </fileset>
		         </classpath>  -->
		   </javac>
    </target>
    <!-- 打成jar包 -->
    <target name="generjar" description="打包" depends="compile">
         <echo message="打成jar包"/>
          <jar jarfile="${build}/${app.jar}" basedir="${build.class}">
			<!-- <manifest>
	   			<attribute name="Main-Class" value="bean.ant.TestAnt" />
			</manifest> -->
	   	  </jar>
    </target>

    <!-- 混淆任务 -->
   <!--  <target name="yguard" depends="generjar">
       <echo message="開始混淆"/>
       <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="yguard.jar" />
       <echo message="产生混淆文件"/>
       <yguard>
           <inoutpair in="${build}/${app.jar}" out="${build}/${obf.jar}"/>
       </yguard>
    </target> -->

    <target depends="generjar" name="yguard">
      <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask"
      classpath="yguard.jar"/>
      <!-- the following can be adjusted to your needs -->
      <yguard>
        <inoutpair in="${build}/${app.jar}" out="${build}/${obf.jar}"/>
        <shrink logfile="${shrinklog}">
          <keep>
            <class classes="protected"
            methods="protected" fields="protected">
              <patternset>
                <include name="com.subao.validate.**.*"/>
                <!-- <exclude name="com.subao.validate.http.**.*"/> -->
              </patternset>
            </class>
          </keep>
        </shrink>
        <rename logfile="${renamelog}">
          <property name="error-checking" value="pedantic"/>
          <keep>
            <class classes="protected"
            methods="protected" fields="protected">
              <patternset>
                <include name="com.subao.validate.**.*"/>
                <!-- <exclude name="com.subao.validate.http.**.*"/> -->
                <exclude name="com.subao.validate.entity.**.*"/>
              </patternset>
            </class>
          </keep>
        </rename>
      </yguard>
    </target>
</project>  

大概解释一下:

1、上面project标签中的default代表默认运行的入口, basedir代表基准路径。

2、property标签定义变量。

3、target标签中就各自是对应的操作。

相关资源:

yguard混淆:http://download.csdn.net/detail/lxq_xsyu/8149559

jar包混淆工具:http://download.csdn.net/detail/lxq_xsyu/8149539

jar包反编译工具:http://download.csdn.net/detail/lxq_xsyu/8149513
这些工具用起来都特别简单,相关界面截图例如以下:

时间: 2024-11-19 16:10:15

ant打包和jar包混淆的相关文章

【Android端】代码打包成jar包/aar形式

Android端代码打包成jar包和aar形式: 首先,jar包的形式和aar形式有什么区别? 1.打包之后生成的文件地址: *.jar:库/build/intermediates/bundles/debug(release)/classes.jar *.aar:库/build/outputs/aar/libraryname.aar 区别:jar包只包含了classes文件,不包含资源文件:aar不仅包含了classes文件,还包含资源文件 并且,aar的这个可以发布到maven库,然后使用者直

[Java] Java 打包成jar包 和 解压jar包

解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 选项包括:     -c  创建新的归档文件     -t  列出归档目录     -x  解压缩已归档的指定(或所有)文件     -u  更新现有的归档文件     -v  在标准输出中生成详细输

【Java】Java程序打包成jar包在Linux上运行

当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在MyEclipse中选中需要打包的项目,点击右键,选择:Export... 如下图所示: (2)然后在弹出的窗口中选择:Java-->Runnable JAR file,然后点击:Next,如下图所示: (3)然后选择需要打包的程序和保存的地方,然后点击:Finish,如下图所示: 这样Java程序

如何打包/运行jar包,及生成exe文件

关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了).决定写下来,以便之后随时调用. 一.jar包 什么是jar包?jar包即(Java Archive File),也就是java归档文件.JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的

maven把项目打包成jar包后找不到velocity模板的bug

使用springmvc 开发时候要实现发送velcotiy模板邮件,在配置正常后,在本地测试正常后,使用maven打包成jar包后,报以下错误, Caused by: org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'templates/index.vm' at org.apache.velocity.runtime.resource.ResourceManagerImpl.load

JAVA学习笔记 -- 把资源文件打包到jar包

初学GUI,用Eclipse导出jar包,设定的最小化图标不能显示(hello.png文件放在项目的根目录下).代码如下: import javax.swing.JFrame; import java.awt.Toolkit; import java.awt.Image; import java.net.URL; public class GUITest { public static void main(String[] args) { JFrame frame = new JFrame();

android将项目打包成jar包使用

将Android打包成jar包供人使用,可利用java的反射技术,获取相应的id.方便使用者替换自己所需要的. 1.新建Android项目:ActivityLibrary,这就是需要我们打包成jar包的项目: 2.MResource这个类的作用,就是利用J2SE反射技术获取相应的ID资源.Android SDK也提供了获取Id资源的方法:getResources().getIdentifier("main_activity", "layout", getPackag

Springboot打包成jar包形式发布

1.修改配置文件pom.xml 添加打包形式设置为jar形式 <packaging>jar</packaging> 2.在build标签内添加内容如下 finalname为打包成jar包的名字 configuration内需要设置主类,即入口类,有时候不配置会报错. <build> <finalName>Demo</finalName> <plugins> <plugin> <groupId>org.sprin

Android Proguard安全加固教你如何让自己的应用程序或SDK更难被反编译--library打包成jar并且混淆

在android 应用层开发的时候咱们技术人员都或多或少都会接触一些SDK比如so.jar等,这些都是数据类公司提供给互联网开发公司的关于技术核心类 方便的东西,因为是核心所以加密加固是必不可少的工作,本博今天就向大家介绍jar的封装打包以及混淆,完成自己的SDK!在此之前需要给大家说 说so,so是由C/C++语言编译而来,其反编译难度更大,因为反编译之后就是汇编语言,需要懂汇编才能看懂,更重要的是即使懂汇编把其复原也是相 当大的工程,尤其是一些大公司的SDK,那就更别说了,而jar呢反编译的