记录程序打包发布方法

先说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>
原文地址:https://www.cnblogs.com/jieyuefeng/p/3502958.html