[JAVA]assembly自定义打包
在很多场景下,会有很多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" 转载请保留原文链接及作者。
 
            