mvn项目压缩打包

通常情况下,maven打包结果为jar或war包。
如果需要一并打包配置文件等参数,通过resources配置指定需要打包的文件参数,如下示例:

 1 <project>
 2     ...
 3     <!-- 定义环境 -->
 4     <profiles>
 5         <!-- 开发环境 -->
 6         <profile>
 7             <id>dev</id>
 8             <properties>
 9                 <!-- 定义profileActive属性 -->
10                 <profileActive>dev</profileActive>
11             </properties>
12             <activation>
13                 <activeByDefault>true</activeByDefault>
14             </activation>
15         </profile>
16
17         <!-- 测试环境 -->
18         <profile>
19             <id>test</id>
20             <properties>
21                 <profileActive>test</profileActive>
22             </properties>
23         </profile>
24
25         <!-- 生产环境 -->
26         <profile>
27             <id>prod</id>
28             <properties>
29                 <profileActive>prod</profileActive>
30             </properties>
31         </profile>
32     </profiles>
33
34     <build>
35         ...
36         <!-- 资源配置 -->
37         <resources>
38             <resource>
39                 <directory>src/main/resources</directory>
40                 <filtering>true</filtering>
41                 <excludes>
42                     <exclude>xxx-dev.yml</exclude>
43                     <exclude>xxx-test.yml</exclude>
44                     <exclude>xxx-prod.yml</exclude>
45                 </excludes>
46             </resource>
47             <resource>
48                 <directory>src/main/resources</directory>
49                 <filtering>true</filtering>
50                 <includes>
51                     <include>xxx-${profileActive}.yml</include>
52                 </includes>
53             </resource>
54         </resources>
55         ...
56     </build>
57 </project>

注:通过resources配置打包的文件是一并打包到jar包或war包中的(位于classpath路径下)。

而在生产环境部署项目时,却需要动态修改数据库配置等参数,此时如果仅仅打一个war进行部署,对于配置文件修改非常不方便。
那这里就提出2个问题:
第一,J2EE项目是否可以支持配置文件在war包之外?
第二,如何通过maven将项目文件进行统一打包压缩?

Q1: 在J2EE项目中使用Spring框架时,可以将配置文件写在properties文件中,从外部加载相应配置参数。示例如下:

web.xml添加配置文件路径参数:

<context-param>
<param-name>confDir</param-name>
<param-value>file:${catalina.home}/conf</param-value><!--将配置文件放到tomcat目录下-->
<!-- <param-value>classpath:</param-value> --><!--将配置文件放在项目classpath路径下-->
</context-param>

spring加载配置文件:( 详见:https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ 之7.8 Container Extension Points

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>${confDir}/jdbc.properties</value>
        </list>
    </property>
    <property name="fileEncoding" value="utf-8"/>
</bean>

spring数据源配置:

 1 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
 2     <property name="driverClass" value="${driverClass}" />
 3     <property name="jdbcUrl" value="${jdbcUrl}" />
 4     <property name="user" value="${user}" />
 5     <property name="password" value="${password}" />
 6     <property name="initialPoolSize" value="${initialPoolSize}" />
 7     <property name="minPoolSize" value="${minPoolSize}" />
 8     <property name="maxPoolSize" value="${maxPoolSize}" />
 9     <property name="breakAfterAcquireFailure" value="${breakAfterAcquireFailure}" />
10     <property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}" />
11     <property name="acquireRetryAttempts" value="${acquireRetryAttempts}" />
12     <property name="acquireIncrement" value="${acquireIncrement}" />
13     <property name="acquireRetryDelay" value="${acquireRetryDelay}" />
14     <property name="testConnectionOnCheckout" value="${testConnectionOnCheckout}" />
15     <property name="testConnectionOnCheckin" value="${testConnectionOnCheckin}" />
16 </bean>

Q2: 通过maven插件maven-assembly-plugin将项目文件进行统一压缩打包,更专业,详见:http://maven.apache.org/plugins/maven-assembly-plugin/
使用该插件时需要单独定义一个打包规则文件,如:assembly.xml,在该文件中定义一系列需要打包的文件参数。

pom.xml:

 1 <build>
 2     <plugins>
 3         <!-- 部署打包: 通过maven-assembly插件压缩为tar包进行发布 -->
 4         <plugin>
 5             <artifactId>maven-assembly-plugin</artifactId>
 6             <configuration>
 7                 <!-- not append assembly id in release file name -->
 8                 <appendAssemblyId>false</appendAssemblyId>
 9                 <descriptors>
10                     <descriptor>assembly.xml</descriptor>
11                 </descriptors>
12                 <finalName>xxx-${project.version}</finalName>
13                 <!-- 定义压缩包存放位置 -->
14                 <outputDirectory>${basedir}/release</outputDirectory>
15             </configuration>
16             <executions>
17                 <execution>
18                     <id>make-assembly</id>
19                     <phase>verify</phase>
20                     <goals>
21                         <goal>single</goal>
22                     </goals>
23                 </execution>
24             </executions>
25          </plugin>
26     </plugins>
27 </build>

assembly.xml:

 1 <assembly
 2     xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
 5     <id>distribution</id>
 6     <formats>
 7         <format>tar</format>
 8     </formats>
 9     <fileSets>
10         <!-- 打包配置文件 -->
11         <fileSet>
12             <directory>src/main/resources</directory>
13             <outputDirectory>/conf</outputDirectory>
14             <includes>
15                 <include>jdbc.properties</include>
16             </includes>
17         </fileSet>
18         <!-- 打包sql文件 -->
19         <fileSet>
20             <directory>${basedir}</directory>
21             <outputDirectory>/sql</outputDirectory>
22             <includes>
23                 <include>*.sql</include>
24             </includes>
25         </fileSet>
26         <!-- 打包INSTALL,change.log -->
27         <fileSet>
28             <directory>${basedir}</directory>
29             <outputDirectory>/</outputDirectory>
30             <includes>
31                 <include>INSTALL</include>
32                 <include>change.log</include>
33             </includes>
34         </fileSet>
35         <!-- 打包war文件 -->
36         <fileSet>
37             <directory>${project.build.directory}</directory>
38             <outputDirectory>/</outputDirectory>
39             <includes>
40                 <include>*.war</include>
41             </includes>
42         </fileSet>
43     </fileSets>
44     <!-- 定义压缩包根目录名称 -->
45     <baseDirectory>xxx-${project.version}</baseDirectory>
46 </assembly>

时间: 2024-12-19 14:10:10

mvn项目压缩打包的相关文章

r.js压缩打包(require + backbone)项目开发文件

最近项目稳定了一点,之前一直没空关注的开发文件压缩打包问题也有时间来解决了 AMD模块化开发中的代码压缩打包工具——r.js 环境搭建基于nodejs:用于AMD模块化开发中的项目文件压缩打包,不是AMD模式也是可以的 javascript部分 压缩javascript项目开发文件夹 build.js压缩打包配置文件,文件名可随意 ({ appDir : './', //基于build,根目录 baseUrl : './project', //基于appDir,项目目录 dir : './pro

vue-webpack项目自动打包压缩成zip文件批处理

为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了写这个批处理的冲动. 虽然说以前没写过,但至少用过.找了份批处理命令的文章了解了下,按自己预先想好的思路,百度了关键的执行命令,然后就自己不断的修改调试,最终完成了这个集webpack打包.压缩成zip格式文件.打开当前文件夹这三个功能的批处理. 怎么用? 只需要把这个批处理文件放在项目根目录下,轻

UE4 项目资源打包,Pak包生成

UE4 项目资源打包,Pak包生成过程 项目打包过程: 1)工具代码编译 2)项目,引擎代码编译 3)资源COOK(烘培) 4)文件整理收集 5)资源打包 6)文件拷贝(exe,dll文件拷贝) Pak包生成是通过UnrealPak.exe来完成的 通过运行时传递参数 UnrealPak.exe [要生成的pak文件] -create=[要打包的文件列表] -order=[文件在pak中排序描述文件] [输出格式] [是否加密] [是否压缩] UnrealPak.exe test.pak -cr

Maven项目的打包发布到Nexus私服和服务器

1.编写pom文件如下: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.4.1</version> </plugin> <plugin> <groupId>

cocos2dx lua 项目如何打包成exe文件

对于一直想把cocos2d-x项目发给朋友看,但是又不会打包成exe,阅读完此文章就会实地操作cocos2dx lua 项目如何打包成exe文件. 不过在此之前要说明一点,最好做成release版本后再打包成exe,不然的话,别人的机器可能会提示缺少dll之类的,(release版本也一样,也可以像下列方法) 下面,你要打包cocos2d-x中的Test项目成一个exe文件 1:可以再cocos2d-x目录下的Debug.win32的全部复制到一个文件夹里 2:然后把Test所有的资源也复制到上

Linux压缩打包方法连载之三:bzip2, bzcat 命令

Linux压缩打包方法有多种,本文集中讲解了bzip2, bzcat 命令的使用.案例说明,例如# 与 gzip 同样的,都是在计算压缩比的参数,-9 最佳,-1 最快. AD: 我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的bzip2, bzcat 命令的概念,本文举了多种范例供大家查看,相信大家看完后会有很多收获.... bzip2, bzcat 命令[[email protected] ~]# bzip2 [-cdz] 档名[[email protected]

C# 压缩打包文件下载

C# 压缩打包文件下载 public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform { #region INameTransform 成员 public string TransformDirectory(string name) { return null; } public string TransformFile(string name) { return Path.GetFileName(name);

- 6.1 压缩打包介绍 - 6.2 gzip压缩工具 - 6.3 bzip2压缩工具 - 6.4 xz压缩工具

- 6.1 压缩打包介绍 - 6.2 gzip压缩工具 - 6.3 bzip2压缩工具 - 6.4 xz压缩工具 # 6.1 压缩打包介绍 ## 常见压缩文件 - Windows .rar .zip .7z - Linux .zip,.gz,.bz2,.xz, - .tar.gz,.tar.bz2,.taz.xz ## 6.2 gzip压缩工具 首先做一个准备工作,在/tmp/下创建一个d6z的目录,再用find命令查找/etc/目录下的带有字符conf的所有文件 把这些文件内容输出到 /tmp

Linux 常用的压缩打包命令行

LINUX 常用的压缩打包命令行: ==== 1.常用压缩命令: tar -zcvf xx.tar.gz xx 例子:tar -zcvf xx-20170614.sql.tar.gz xx-20170614.sql 2.解压缩 tar -zxvf xx.tar.gz 3.把打包压缩过的文件从服务器上下载到本地 scp [email protected]:/home/数据库名-20170614.sql.tar.gz E:/download/ 例子:scp [email protected]:/ho