欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

maven-profile

程序员文章站 2022-06-03 22:49:16
...
maven 提供了 profile 配置。
profile 配置功能非常强大。典型的应用就是可以解决不同环境下的资源配置和过滤。

[b]1、可以解决配置资源文件的过滤。(eg: src\main\resources)

2、可以解决web资源文件的过滤。(eg:src\main\webapp)

3、可以解决java文件的过滤。(src\main\java)[/b]

第一中的情况非常普遍,也是maven必用的功能之一

第二中情况出现也有,相对较少。
下面简单讲解下:

处理web资源文件的插件: maven-war-plugin
指定 过滤的资源目录: <directory>src/main/webapp</directory>
指定:filtering 的值为true,代表对其进行过滤。


<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-beta-1</version>
<configuration>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/main/webapp</directory>
<includes>
<include>**/*.js</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>



第三中情况出现的机率很少,但是有时候又非常必要,关于这方面的网上的资料也相当贫乏。我特意举一个例子:
比如我们想在测试环境上跑一个任务task,清理一些垃圾数据,但是这部分功能在生产环境又是不必要的,所以要保证打包的时候,task的class文件在测试环境要有,在生产环境不能有,如何做到呢?

下面的配置:

项目的结构如下:

主代码:src/main/java
定时任务:src/main/task


[img]http://dl2.iteye.com/upload/attachment/0086/9247/642484ad-85a1-3dc0-9e17-473f86ade6c3.png[/img]

[b]实现思路[/b]:在profile 的test 和pro 配置中 定义变量属性,配置到 指定 build 的sourceDirectory 元素的内容。


<profiles>
<profile>
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<finalName>back-web-test</finalName>
</build>
<properties>
<jsname>js_name</jsname>
<build.sourceDirectory>
src/main
</build.sourceDirectory>
</properties>
</profile>

<profile>
<id>pro</id>
<build>
<finalName>back-web-pro</finalName>
</build>
<properties>
<jsname>js_name</jsname>
<build.sourceDirectory>
src/main/java
</build.sourceDirectory>
</properties>
</profile>

</profiles>

<build>
<finalName>back-web</finalName>
<sourceDirectory>
<!-- 关键点-->
${build.sourceDirectory}
</sourceDirectory>
</build>



另外一种办法:打包的时候不打包编译的class文件。
这个需要配置apache-war-plugin 的非包含路径。
相关标签: maven profile

推荐阅读