maven资源⽂件的相关配置,及环境参数动态打包
构建Maven项⽬的时候,如果没有进⾏特殊的配置,Maven会按照标准的⽬录结构查和处理各种类型⽂件。
src/main/java和src/test/java
这两个⽬录中的所有*.java⽂件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes⽬录中,但是这两个⽬录中的其他⽂件都会被忽略掉。
src/main/resouces和src/test/resources
这两个⽬录中的⽂件也会分别被复制到target/classes和target/test-classes⽬录中。
target/classes
打包插件默认会把这个⽬录中的所有内容打⼊到jar包或者war包中。
Maven项⽬的标准⽬录结构
src
main
java        源⽂件
resources    资源⽂件
filters  资源过滤⽂件
config  配置⽂件
scripts  脚本⽂件
webapp  web应⽤⽂件
test
java    测试源⽂件
resources    测试资源⽂件
filters    测试资源过滤⽂件
it      集成测试
assembly    assembly descriptors
site    Site
target
generated-sources
classes
generated-test-sources
test-classes
xxx.jar
<
<
<
资源⽂件的配置
资源⽂件是Java代码中要使⽤的⽂件。代码在执⾏的时候会到指定位置去查这些⽂件。前⾯已经说了Maven默认的处理⽅式,但是有时候我们需要进⾏⾃定义的配置。
有时候有些配置⽂件通常与.java⽂件⼀起放在src/main/java⽬录(如mybatis或hibernate的表映射⽂件)。有的时候还希望把其他⽬录中的资源也复制到classes⽬录中。这些情况下就需要在l⽂件中修改配置了。
可以有两种⽅法:
⼀是在<build>元素下添加<resources>进⾏配置。
另⼀种是在<build>的<plugins>⼦元素中配置maven-resources-plugin等处理资源⽂件的插件。
配置resouces节点
<build>
.......
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
......
</build>
配置资源处理插件
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
maven打包本地jar包</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
另⼀个插件也能完成相同的功能
<plugin>
<groupId&jo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
打包时⽂件相关的配置
打包时target/classes⽬录中的资源⽂件会和class字节码⼀起被打进jar包或war包中。有时候默认的情况不能完全满⾜需求,如
target/classes⽬录中的⼀些⽂件不希望打⼊jar包中,就需要额外配置maven-jar-plugin插件。
       <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>*.properties</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>xxxxxx.ConsoleLauncher</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
 在项⽬的profile中添加如下的profile配置:
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<!-- 设置默认激活这个配置 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 发布环境 -->
<id>release</id>
<properties>
<profiles.active>release</profiles.active>
</properties>
</profile>
<profile>
<!-- 测试环境 -->
<id>beta</id>
<properties>
<profiles.active>beta</profiles.active>
</properties>
</profile>
</profiles>
  这⾥定义了三个环境,分别是dev(开发环境)、beta(测试环境)、release(发布环境),其中开发环境是默认激活的(activeByDefault为true),这样如果在不指定profile时默认是开发环境,也在package的时候显⽰指定你要选择哪个开发环境,详情见后⾯。
激活profile
1)默认的激活
  上⾯的profile配置中设置的默认的激活环境。如下⾯所⽰
<activeByDefault>true</activeByDefault>
2)使⽤-P参数显⽰激活⼀个profile
  当我们在进⾏Maven操作时就可以使⽤-P参数显⽰的指定当前激活的是哪⼀个profile了。⽐如我们需要在对项⽬进⾏打包的时候使⽤id 为dev的profile,我们就可以这样做:
mvn package –Pdev
  这⾥假设dev是在l中使⽤dev标记的处于激活状态的profile,那么当我们使⽤“-P !profile”的时候就表⽰在当前操作中该profile 将不处于激活状态。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。