先说Linux下C语言程序:
使用Eclipse创建一个GUN Autotools的Hello World ANSI C Autotools Project生成可以自动打包的目录结构,然后修改Makefile.am文件,configure、make之后make dist打包。
再说Maven管理的Java的Runnable Jar程序:
增加POM文件plugins项的maven shade plugin:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.yeecloud.netpush.syn.YeepushSynMain</mainClass> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
说明:spring.handlers和spring.schemas的AppendingTransformer是为了避免打包时候后一个handlers或schemas的文件覆盖前一个
然后使用命令mvn package打包
再说Maven管理的Java Web项目打包:
直接使用命令mvn package打包
Maven代码混淆:
<plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> <configuration> <attach>true</attach> <libs> <lib>${java.home}/lib/rt.jar</lib> <lib>${java.home}/lib/jce.jar</lib> <lib>${java.home}/lib/jsse.jar</lib> </libs> <options> <option>-optimizationpasses 3</option> <option>-overloadaggressively</option> <option>-useuniqueclassmembernames</option> <option>-verbose</option> <option>-keepattributes Exceptions, Signature, Deprecated, InnerClasses</option> <option>-keep public class ${Main-Class} {public *;}</option> </options> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard</artifactId> <version>4.10</version> <scope>runtime</scope> </dependency> </dependencies> </plugin>