转自:https://my.oschina.net/vernon/blog/271970
摘要: 这段时间接触Maven, 发现还是个不错的东西, 我在OpenShift申请了一个账号, 准备自己做一个自己的网站, 它默认是Maven管理的, 也可以自己用其他的. 但是我要打war, 然后发布. 我本地的测试配置文件 与 线上的配置不一样, SB的做法就是每次复制粘贴, 这太.... 所以, 我必须要在本地的IDEA里面一样, 需要谁作为我的资源文件就要作为的我资源文件, 那就方便了, 找了很多的BLGO, 说的很好, 就是琳琳碎碎的. 还不如给我一个pom.xml了. 以至于我一直没有跑起来, 或者他们的碎片就是不完整的, 自己折腾了半天, 并且自己测试, 上线, 都OK. ...
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>book</groupId>
<artifactId>book</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>book</name>
<repositories>
<repository>
<id>eap</id>
<url>http://maven.repository.redhat.com/techpreview/all</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>eap</id>
<url>http://maven.repository.redhat.com/techpreview/all</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<package.environment>local</package.environment>
</properties>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1003-jdbc4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>local</id>
<properties>
<package.environment>local</package.environment>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>product</id>
<properties>
<package.environment>product</package.environment>
</properties>
</profile>
</profiles>
<build>
<finalName>book</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>local/*</exclude>
<exclude>product/*</exclude>
<exclude>public/*</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<warName>book</warName>
<webResources>
<resource>
<directory>src/main/resources/${package.environment}</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources/public</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
<!--<resource>-->
<!--<directory>${project.build.directory}/classes</directory>-->
<!--<includes>-->
<!--<include>**/*.properties</include>-->
<!--<include>**/*.xml</include>-->
<!--</includes>-->
<!--</resource>-->
</webResources>
</configuration>
</plugin>
</plugins>
</build></project>
其中, 我们注意的地方: 我解释一下:
<profiles>
<profile>
<id>local</id>
<properties>
<package.environment>local</package.environment>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>product</id>
<properties>
<package.environment>product</package.environment>
</properties>
</profile>
</profiles>
这里就是不同的resources文件夹, 我这里只区分本地 产品; 设置为true的就是默认被激活的. 所以后面打包默认就是本地;
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>local/*</exclude>
<exclude>product/*</exclude>
<exclude>public/*</exclude>
</excludes>
</resource>
</resources>
这里就是我的资源文件, public里面存放我的公用的, 比如Spring的配置文件, 就是本地与产品都一样的;local 与 product一看就知道了;
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<warName>book</warName>
<webResources>
<resource>
<directory>src/main/resources/${package.environment}</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources/public</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
<!--<resource>-->
<!--<directory>${project.build.directory}/classes</directory>-->
<!--<includes>-->
<!--<include>**/*.properties</include>-->
<!--<include>**/*.xml</include>-->
<!--</includes>-->
<!--</resource>-->
</webResources>
</configuration>
</plugin>
这里就是war的插件了,
${package.environment}
就是动态指定文件夹了.
<filtering>true</filtering>
这里一定需要设置为true才行.
然后就差不多了. 最后执行 mvn clean ; mvn compile; mvn package; 这里是Maven的生命周期, 其他介绍的文章太多了, 我就不再具体讲. 如果说我要打product的war包;
mvn clean ; mvn compile; mvn -Pproduct package;
那就激活了product 的资源文件;
就这样子, 很简单吧~
相关推荐
Maven作为Java项目管理的重要工具,提供了强大的多环境配置打包功能,帮助开发者有效地管理和构建项目,确保代码在不同环境下能够正确运行。 【描述】: 这篇博客(虽然描述为空,但可以通过提供的链接进一步了解...
当前案例中包含一整套的代码和word文档,非常适合新手... 主要是通过maven打包加载不同环境的properties文件 然后将对于的属性绑定到指定的实体对象中;然后通过调用接口可以看到加载不同环境控制台打印的内容是不一样的
当前案例中包含一整套的代码和word文档,非常适合新手代码简单易懂; 主要是通过maven打包配合springboot application.properties文件配置实现通过打包来完成加载不同环境的配置内容;
"maven 过滤文件夹打包"这个主题涉及到的是如何利用Maven的资源过滤功能来实现针对不同运行环境的配置文件打包。下面将详细解释这一过程。 在开发环境中,我们通常会有多种配置文件,比如`application-dev....
总的来说,`maven-assembly-plugin`是Maven构建过程中的一个重要工具,它帮助开发者灵活地定制打包过程,适应不同环境的需求。结合Spring Boot项目,我们可以更高效地管理和部署应用程序,提高开发和运维的效率。
"maven+bat打包"是指使用Apache Maven,一个流行的Java项目管理工具,结合批处理脚本(BAT)来自动化项目的打包过程。这种方式可以极大地提高开发效率,确保每次构建的一致性和可重复性。下面将详细介绍这个过程及其...
6. **部署**:最后,自动打包的产物可以被部署到测试环境或生产环境,这通常通过Maven的部署插件或者额外的部署脚本来完成。 总结来说,"基于Maven+SVN自动打包"是一种高效的开发实践,它整合了两个强大的工具,...
** Maven 3.5.4 打包工具详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model, POM),自动化构建过程,管理依赖关系,并执行各种生命周期...
标题“maven 占位符打包”指的是在Maven的POM.xml文件中使用特定的占位符,以便在不同环境中替换为相应的配置值。这样可以实现代码的复用和环境的隔离,提高开发效率并降低出错的可能性。 描述中的“工程运行环境有...
在Eclipse这样的集成开发环境(IDE)中,也可以通过配置Maven插件,实现一键打包。 在实际操作中,我们需要在项目的`pom.xml`文件中定义打包的相关设置。例如,我们可以设置打包类型(`<packaging>`元素,如`jar`、...
1. **为什么要搭建Maven私服**:企业内部项目通常有私有的依赖库,直接连接外部公共仓库会增加网络延迟,且可能涉及安全问题。搭建Maven私服可以作为中间层,缓存公共依赖,同时托管内部私有库。 2. **Nexus作为...
使用maven profile指定配置文件打包适用多环境的方法 ...使用Maven Profile指定配置文件打包适用多环境的方法是一种非常实用的方法,能够帮助开发者轻松地在不同的环境中切换配置文件,避免了频繁修改配置文件的麻烦。
本篇文章将深入探讨如何使用Eclipse与Maven一起打包bundle,这在Java OSGi(Open Services Gateway Initiative)开发中尤为常见。 首先,我们需要了解OSGi,它是一种模块化系统,用于Java应用程序,允许动态发现和...
此时,可以通过Maven的profile功能,定义不同环境的配置,并在打包时选择相应的profile。 ### Maven profile Profile是Maven中的一个概念,用于根据不同的环境条件启用或禁用一组设置。例如,你可以创建名为`dev`、...
本示例源码是关于在使用IntelliJ IDEA(IDEA)和Maven时,如何打包SpringBoot项目为jar包,并进一步在本地引入和使用的详细步骤记录。这个压缩包包含了"打包前"和"打包后"两个阶段的文件,帮助开发者理解整个流程。 ...
这样,我们可以轻松地在不同的环境中替换配置文件,而无需重新打包整个应用。 总的来说,这种打包方式为项目的部署和维护提供了更大的灵活性。通过理解并实践这些知识点,开发者能够更好地掌控Spring Boot和Maven的...
本教程将详细讲解如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包,确保代码的安全性并提高可维护性。 首先,让我们了解一下涉及的工具和技术: 1. **Java**: 一种广泛使用的面向对象的编程语言,用于构建跨...
总结,这个"Maven离线安装包(含环境配置文件)"提供了一种便捷的方式,使得开发者即使在无网络环境下也能搭建和使用Maven环境。它简化了Maven的安装过程,同时方便了Eclipse用户的集成工作,提高了开发效率。无论你...