zoukankan      html  css  js  c++  java
  • 记录程序打包发布方法

    先说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>
  • 相关阅读:
    sql server delete语句
    sql server 通配符
    sql server join联结
    windows下如何使用两个版本的nodejs
    PHP的Trait 特性
    PHP错误与异常处理try和catch
    laravel belongsTo()&hasOne()用法详解
    Laravel Model 的 fillable (白名单)与 guarded (黑名单)
    js原生,缓动动画封装
    js原生轮播图
  • 原文地址:https://www.cnblogs.com/jieyuefeng/p/3502958.html
Copyright © 2011-2022 走看看