maven-profile

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 的非包含路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值