Maven分离配置、依赖
2017-08-13 09:25
267 查看
文章转自:http://blog.csdn.net/u010376788/article/details/56968353
在用Maven打包项目时,要像Hadoop、Spark、Hive等项目打包之后的文件包含bin、lib、conf之类的文件夹,同时可以动态的修改项目的配置参数,需要如下两步:
在 pom.xml 文件中引入 maven-assembly 插件;
在 assembly.xml 文件中制定各个文件目录。
pom.xml引入maven-assembly插件
然后,是src/assembly/assembly.xml文件:
不难发现,我们把打好的程序jar包也放到了 lib目录 中。
执行代码
用这种方法打的jar包,是不包含依赖的jar包和配置文件的。所以,在执行之前需要把依赖的jar包和配置文件加入到 $CLASSPATH 中,Shell脚本如下:
在用Maven打包项目时,要像Hadoop、Spark、Hive等项目打包之后的文件包含bin、lib、conf之类的文件夹,同时可以动态的修改项目的配置参数,需要如下两步:
在 pom.xml 文件中引入 maven-assembly 插件;
在 assembly.xml 文件中制定各个文件目录。
pom.xml引入maven-assembly插件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>true</appendAssemblyId> <descriptors> <descriptor>src/assembly/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>maven-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
然后,是src/assembly/assembly.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd"> <id>all</id> <formats> <format>tar.gz</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>bin</directory> <outputDirectory>bin</outputDirectory> <fileMode>755</fileMode> </fileSet> <fileSet> <directory>src/main/resources</directory> <outputDirectory>conf</outputDirectory> <fileMode>755</fileMode> <lineEnding>unix</lineEnding> <excludes> <exclude>*.formatted</exclude> </excludes> </fileSet> </fileSets> <dependencySets> <dependencySet> <fileMode>755</fileMode> <outputDirectory>lib</outputDirectory> <scope>runtime</scope> <useProjectArtifact>false</useProjectArtifact> <excludes> <exclude>${project.groupId}:${project.artifactId}</exclude> </excludes> </dependencySet> <dependencySet> <fileMode>755</fileMode> <outputFileNameMapping>${project.artifactId}.jar</outputFileNameMapping> <outputDirectory>/lib/</outputDirectory> <scope>runtime</scope> <includes> <include>${project.groupId}:${project.artifactId}</include> </includes> </dependencySet> </dependencySets> </assembly>
不难发现,我们把打好的程序jar包也放到了 lib目录 中。
执行代码
用这种方法打的jar包,是不包含依赖的jar包和配置文件的。所以,在执行之前需要把依赖的jar包和配置文件加入到 $CLASSPATH 中,Shell脚本如下:
#!/usr/bin/env bash BIN=`dirname $0` BIN=`cd $BIN; pwd` APP_HOME=`dirname $BIN` JAVA=${JAVA_HOME}/bin/java CLASSPATH=${APP_HOME}/conf #JAR=${APP_HOME}/tools.jar for f in ${APP_HOME}/lib/*.jar; do CLASSPATH=${CLASSPATH}:$f done for f in ${APP_HOME}/*.jar; do CLASSPATH=${CLASSPATH}:$f done MAINCLASS="edu.wzm.joda.JodaDemo" exec "$JAVA" -classpath $CLASSPATH $MAINCLASS
相关文章推荐
- Maven分离配置、依赖
- Maven 配置 Storm 第三方依赖包分离
- IntelliJ IDEA用maven自动打jar包配置(程序和依赖包分离)
- IntelliJ IDEA用maven自动打jar包配置(程序和依赖包分离)
- maven常用的依赖配置,tomcat和jetty双配置
- net.sf.json Maven依赖配置
- 配置Jstl的Maven依赖
- 如何在MAVEN中配置Spring的依赖包
- 160929、各数据库连接配置与maven依赖安装
- 各数据库连接配置与maven依赖安装
- Maven依赖配置和依赖范围
- Eclipse中通过Maven添加依赖自动提示配置
- maven struts—spring-ibatis依赖配置 加上了部分源码的配置 都可以自动从开源库中下载
- maven常用的依赖配置,tomcat和jetty双配置
- Maven详解(五) 依赖的配置
- maven配置: 生成war的同时生成jar, 并在其他artifact配置依赖于这个jar
- maven配置: 生成war的同时生成jar, 并在其他artifact配置依赖于这个jar
- 正确配置jstl的maven依赖
- Maven profile结合Maven AntRun Plugin实现不同环境配置文件分离打包
- IDEA中maven项目导入依赖包太慢,因为你的中央仓库配置的国外....