[JAVA]assembly自定义打包

  1. 一、去掉springboot打包方式
  2. 二、添加assembly依赖
  3. 三、assembly.xml
  4. 四、自定义脚本
    1. start.sh
    2. stop.sh
  5. 目录结构
    1. 项目结构
    2. 解压后结构

在很多场景下,会有很多shell脚本或者需要操作一些配置,可以使用maven的assembly插件打出结构清晰的架构。

官网参考:点击进入

一、去掉springboot打包方式

<build>
    <plugins>
        <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

二、添加assembly依赖

    <build>
        <finalName>zx-demo</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <!--运行jar包时运行的主类,要求类全名-->
                            <mainClass>com.example.zxdemo.Application</mainClass>
                            <!-- 是否指定项目classpath下的依赖 -->
                            <addClasspath>true</addClasspath>
                            <!-- 指定依赖的时候声明前缀 -->
                            <classpathPrefix>./</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>../conf/ ../resources/</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution><!-- 配置执行器 -->
                        <id>make-assembly</id>
                        <phase>package</phase><!-- 绑定到package生命周期阶段上 -->
                        <goals>
                            <goal>single</goal><!-- 只运行一次 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  • 可以看到依赖中写了src/main/assembly/assembly.xml,这是配置文件存放的位置。

    三、assembly.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly>
      <id>zx-demo</id>
      <formats>
          <format>tar</format><!--打包的文件格式,也可以有:war zip-->
      </formats>
      <!--tar.gz压缩包下是否生成和项目名相同的根目录-->
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
          <dependencySet>
              <!--是否把本项目添加到依赖文件夹下-->
              <useProjectArtifact>true</useProjectArtifact>
              <outputDirectory>lib</outputDirectory>
              <!--将scope为runtime的依赖包打包-->
              <scope>runtime</scope>
          </dependencySet>
      </dependencySets>
      <fileSets>
          <fileSet>
              <directory>src/main/bin</directory>
              <outputDirectory>./</outputDirectory>
          </fileSet>
          <fileSet>
              <directory>src/main/resources</directory>
              <outputDirectory>conf</outputDirectory>
          </fileSet>
      </fileSets>
    </assembly>
  • 可以看到 src/main/bin 目录,可以自定义启动脚本。

    四、自定义脚本

    start.sh

    nohup java -jar -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/urandom ./lib/zx-demo.jar > /dev/null 2>&1 &

    stop.sh

    PID=`ps -ef | grep zx-demo.jar | grep -v grep | awk '{print $2}'`
    if [ -z $PID ]; then
      echo Application is already stopped
    else
      echo kill $PID
      kill -s 9 $PID
    fi

在assembly.xml中可自定义打包格式,打包后,target下会生成相应的压缩文件。
图片

conf:resources下的文件

lib:所有依赖的jar包

目录结构

项目结构

项目

解压后结构

目录


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xiaoxin1218@qq.com

文章标题:[JAVA]assembly自定义打包

文章字数:766

本文作者:周信

发布时间:2019-11-24, 09:58:29

最后更新:2023-05-03, 10:25:35

原始链接:http://zx21.xyz/2019/11/24/JAVA-assembly自定义打包/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

可为我打赏鼓励~