• maven打包成jar文件与打包成tar.gz文件


    一、普通main方法入口的jar程序打包 maven-jar-plugin插件与maven-jar-plugin插件
    用到maven-jar-plugin插件与maven-jar-plugin插件,打包完的jar文件所依赖包没有导包到jar文件中,管理不方便

    打包命令: 

    maven  -package

    搭建过程:
    1、目录结构:

     

    2、Pox.xml配置:


    <build>
    <finalName>bigdata11</finalName><!--打包完成文件的名字-->
    <plugins>
    <plugin><!--maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分内容 jar包-->
    <groupId>org.apache.maven.plugins</groupId> <!--引入maven插件的groupId-->
    <artifactId>maven-jar-plugin</artifactId> <!--引入maven插件的artifactId-->
    <version>2.4</version>
    <configuration>
    <archive>
    <manifest>
    <addClasspath>true</addClasspath><!--MANIFEST.MF 是否增加依赖包-->
    <classpathPrefix>lib/</classpathPrefix><!--MANIFEST.MF文件 依赖包位置格式-->
    <mainClass>proxy.demo.TestMain</mainClass>
    </manifest>
    </archive>
    </configuration>
    </plugin>

    <plugin><!--maven-dependency-plugin插件用于将依赖包拷贝到<outputDirectory>${project.build.directory}/lib</outputDirectory>指定的位置,即lib目录下-->
    <groupId>org.apache.maven.plugins</groupId><!--将依赖包放到物理存储外部 li-->
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.4</version>
    <executions>
    <execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
    <goal>copy-dependencies</goal>
    </goals>
    <configuration>
    <outputDirectory>${project.build.directory}/lib</outputDirectory>
    </configuration>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>

    此方式只能生成除依赖包之外的(自己写的代码)打包成jar文件,会在target目录下生成jar包,并将依赖包拷贝到target/lib目录下,目录结构如下:

     

    二、使用maven-assembly-plugin插件打包(与eclipse导出类似)

    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
    <!--依赖装配 false:指的是,把依赖包跟java程序打包成一个jar文件内;true(默认):指的是,把依赖包单独打包成一个jar文件-->
    <appendAssemblyId>false</appendAssemblyId>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
    <manifest>
    <!--此处指定main方法入口的class-->
    <mainClass>wc.WordCountMain</mainClass>
    </manifest>
    </archive>
    </configuration>

    <executions>
    <execution>
    <!--代表执行插件 不写executions,则打包命令变成:mvn package assembly:single-->
    <id>make-assembly</id>
    <phase>package</phase>
    <goals>
    <goal>assembly</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    打包命令: 

    maven  -package

    三、maven 打包成tar.gz文件

    同样使用assembly插件:maven-jar-plugin   maven-assembly-plugin

    综述:

     

    1、首先pom.xml文件添加插件
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
    <archive>
    <!-- false:生成的jar中,不要包含pom.xml和pom.properties这两个文件-->
    <addMavenDescriptor>true</addMavenDescriptor>
    <manifest>
    <!--true:是否要把第三方jar放到manifest的classpath中-->
    <addClasspath>true</addClasspath>
    <!--生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/-->
    <classpathPrefix>lib/</classpathPrefix>
    <!--应用的main class-->
    <mainClass>wc.WordCountMain</mainClass>
    </manifest>
    </archive>
    <!--过滤掉不希望包含在jar中的文件-->
    <excludes>
    <exclude>${project.basedir}/xml/*</exclude>
    </excludes>
    </configuration>
    </plugin>

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId> maven-assembly-plugin </artifactId>
    <version>2.5.5</version>
    <configuration>
    <descriptors>
    <!-- 描述文件路径 -->
    <descriptor>src/main/assembly/assembly.xml</descriptor>
    </descriptors>
    <archive>
    <manifest>
    <mainClass>wc.WordCountMain</mainClass>
    </manifest>
    </archive>
    </configuration>
    <executions>
    <execution>
    <!--名字任意 -->
    <id>make-assembly</id>
    <!-- 绑定到package生命周期阶段上 -->
    <phase>package</phase>
    <goals>
    <!-- 只运行一次 -->
    <goal>single</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    2、描述文件(srcmainassembleassembly.xml)

    <assembly>
    <id>release</id><!--名字 会附加在版本后面-->
    <formats>
    <format>tar.gz</format><!--打包格式-->
    </formats>
    <!--如果为false,不会额外产生根目录,否则,在tar.gz包中会产生以pom.xml中artifactId和version命名的根目录-->
    <includeBaseDirectory>true</includeBaseDirectory>
    <!--是对依赖包的设置-->
    <dependencySets>
    <!--assembly中dependencySets的意思就是,将scope为runtime的依赖包,放到AlarmReport/lib目录下-->
    <dependencySet>
    <!--定义了是否解压依赖包,如果为true,会解压出依赖包中的class文件,反之,则不进行解压-->
    <unpack>false</unpack>
    <!--限定了对哪些依赖包进行操作;(依赖包scope的值是在pom.xml中定义的)-->
    <scope>runtime</scope>
    <!-- 依赖包在tar.gz包中相对于根目录的路径-->
    <outputDirectory>lib</outputDirectory>
    <!--依赖包中是否包含当前工程-->
    <useProjectArtifact>true</useProjectArtifact>
    </dependencySet>
    </dependencySets>
    <!--指定哪些文件包含在打出的tar.gz包中-->
    <!--assembly中两个fileSets的作用是,
    将target/classes下的文件,打包到AlarmReport目录;将startup.sh打包到AlarmReport/bin目录-->
    <fileSets>
    <!-- 把项目相关的说明文件,打包进zip文件的根目录 -->
    <fileSet>
    <directory>${project.basedir}</directory>
    <outputDirectory>/</outputDirectory>
    <includes>
    <include>README*</include>
    <include>LICENSE*</include>
    <include>NOTICE*</include>
    </includes>
    </fileSet>

    <!-- 把项目的配置文件,打包进zip文件的config目录 -->
    <fileSet>
    <directory>${project.basedir}srcmainconfig</directory>
    <outputDirectory>config</outputDirectory>
    <includes>
    <include>*.xml</include>
    <include>*.properties</include>
    </includes>
    </fileSet>

    <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
    <fileSet>
    <directory>${project.build.scriptSourceDirectory}</directory>
    <outputDirectory></outputDirectory>
    <includes>
    <include>startup.*</include>
    </includes>
    </fileSet>

    <!-- 把项目的脚本文件(除了启动脚本文件),打包进zip文件的script目录 -->
    <fileSet>
    <directory>${project.build.scriptSourceDirectory}</directory>
    <outputDirectory></outputDirectory>
    <includes>
    <exclude>startup.*</exclude>
    </includes>
    </fileSet>

    <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
    <fileSet>
    <directory>${project.build.directory}</directory>
    <outputDirectory></outputDirectory>
    <includes>
    <include>*.jar</include>
    </includes>
    </fileSet>
    </fileSet> </fileSets></assembly>
    打包命令: 

    maven  -package

    ————————————————
    版权声明:本文为CSDN博主「七彩星云」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u012117339/article/details/79713204

  • 相关阅读:
    linq查询结果指定列的两种方式
    MVC HTML辅助类常用方法记录
    如何获取google地图、baidu百度地图的坐标
    js解析Json字符串的方法
    EF 官方API
    sqlserver 计算 百分比
    js 判断js函数、变量是否存在
    JS 去字符串空格 总结
    sql 转换日期格式 只保留月份和日期
    C# json object互转工具
  • 原文地址:https://www.cnblogs.com/morganlin/p/12118077.html
Copyright © 2020-2023  润新知