maven有许多优秀的插件,最近在研究打包中替换多重环境的配置,同事介绍使用阿里的auto-config,使用了一下确实不错。
auto-config其实和ant时代的字符替换差不多太多,只是ant需要自己写脚本完成这些事情,但是auto-config通过配置就可以了。
auto-config的核心技术我个人认为是volicty的模板技术,包括里面的占位符oplacehold都是以${}volicty的语法定义的。
auto-config主要涉及的文件有以下部分:auto-config.xml,template.vm,antx.property.
auto-config.xml主要定义那些字符需要替换,他们的默认值是什么,那 些文件需要替换占位符,以及输出的文件。
template.vm 主要定义模板文件,其实就是我们需要的配置文件,只不过这里需要替换的符号都以占位符的形 式输出。
antx.property 定义了占位符中 的具体的值用于替换占位符的值。
如果使用auto-config:
1.安装maven
2.使用auto-config的插件,需要在pom.xml中plugin中插入,后续会详细介绍,这里有必要说一下大陆的长城防火墙,太厉害了,maven中央仓库下载一个jar包需要半个小时,这里可以再maven的setting文件的mirrors增加如下配置:、
<mirror>
<id>nexus-osc</id>
<mirrorOf>external:*</mirrorOf>
<name>Nexus osc</name>
<url>http://maven.oschina.NET/content/groups/public/</url>
</mirror>
</mirrors>
表示从oschina这个站下载所有的maven文件。
pom.xml增加auto-config的配置
<build>
<finalName>json</finalName>
<plugins>
<plugin>
<groupId>com.alibaba.citrus.tool</groupId>
<artifactId>autoconfig-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<userProperties>${user.dir}/${autoconfig.properties}</userProperties>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>autoconfig</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这里的配置也是网络上download下来的,我手动添加了一个配置
<configuration>
<userProperties>${user.dir}/${autoconfig.properties}</userProperties>
</configuration>
这个用来干嘛的呢?用于自定义antx.property的文件位置,为什么要自定义文件位置?原因是方便在多环境中指定参数来修改配置。
这里user.dir是当前工程的路径,autoconfig默认的文件位置是在user.home目录下的。
这里说了,在多环境需要修改配置,所以需要在pom.xml中配置多个环境的profile
<profiles>
<profile>
<id>dev</id>
<properties>
<autoconfig.properties>antx-dev.properties</autoconfig.properties>
</properties>
</profile>
<profile>
<id>deploy</id>
<properties>
<autoconfig.properties>antx-pro.properties</autoconfig.properties>
</properties>
</profile>
</profiles>
<profiles>
<profile>
<id>dev</id>
<properties>
<autoconfig.properties>antx-dev.properties</autoconfig.properties>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<autoconfig.properties>antx-pro.properties</autoconfig.properties>
</properties>
</profile>
</profiles>
在实际的编译过程中只需要 mavn package -P dev或者 mavn package -P pro就可以打包生产或者开发下的包了
pom.xml定义好了之后,需要在WEB-INF目录下面增加一个META-INF的文件夹以及在该文件夹下新增autoconf文件夹
在autoconf文件夹下放置auto-config.xml以及所有的模板文件,注意模板文件必须放在这里,我目前没有找到放到其他位置的配置。
auto-config的具体配置:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<group>
<property name="petstore.work" description="应用程序的工作目录" />
<property name="petstore.loggingRoot" defaultValue="${petstore.work}/logs"
description="日志文件目录" required="true"/>
<property name="petstore.upload" defaultValue="${petstore.work}/upload"
description="上传文件的目录" />
<property name="petstore.loggingLevel" defaultValue="warn"
description="日志文件级别">
</property>
</group>
<script>
<generate template="web.vm" destfile="WEB-INF/classes/spring-web.xml" charset="UTF-8"/>
</script>
</config>
这里property定义的名字都是占位符的名字,defaultvalue是默认值
script下面定义的具体的模板,以及输出的文件。
web.vm是模板文件定义了,也就是我们的配置文件,变量通过占位符分割
<?xml version="1.0" encoding="UTF-8"?>
<config>
<property name=${petstore.work}></property>
<property name=${petstore.loggingRoot}></property>
<property name=${petstore.upload}></property>
<property name=${petstore.loggingLevel}></property>
</config>
antx.property是具体配置的落地,可以有多个,通过mvn -p 制定具体的配置文件
petstore.work=1
petstore.loggingRoot=2
petstore.upload=3
petstore.loggingLevel=4
如果没有在pom。xml 通过configuration配置默认的antx.properties是在项目的根目录下,或者在user.home下的,如果没有autoconfig需要你创建。
通过修改四个文件基本上就可以使用auto-config了,打包后的文件已经将占位符修改成我们需要的值了,这个是多环境打包的神器。
相关推荐
- 自动配置(Auto-configuration)是Spring Boot的一大特点,它可以根据引入的依赖自动配置相应的Bean。 2. **Spring MVC**: - Spring MVC是Spring框架的一部分,用于构建Web应用。它提供了一种模型-视图-控制器...
注:SpringBoot强大的Auto Config和统一的依赖管理极大的简化了spring配置和maven依赖,在不了解其都配置了哪些东西的基础上可能会对初学者有一定困扰,所以建议初学者先看Guns V1.0 ##功能 简介 用户管理 角色管理 ...
- **多环境配置**: - **配置文件**:使用 `application-{profile}.properties` 形式支持不同环境配置。 - **激活环境**:通过 `spring.profiles.active` 属性指定激活的配置文件。 - **部署至 Linux 系统**: -...
`.mvn` 目录包含 Maven 的配置文件,如 `maven-wrapper.properties` 用于定义 Maven 包版本和下载路径,`maven.config` 可以自定义 Maven 的执行参数。 11. **`target` 目录** `target` 目录是 Maven 构建后生成...
- `自动配置(Auto Configuration)`: 根据项目中的类和jar依赖,自动配置Spring容器。 - `内嵌服务器(Embedded Server)`: 如Tomcat、Jetty等,无需额外安装服务器即可运行应用。 - `Actuator**: 提供健康检查...
这样,当我们执行构建任务时,插件就会自动处理库的依赖关系,将其一并打包进aar文件。 在`dependencies`部分,我们可以看到使用了`embed`关键字来引入依赖库。与`compile`不同,`embed`关键字会确保这些依赖库被...
- **自动配置(Auto Configuration)**:根据类路径中的jar包和配置文件自动配置Spring容器。 - **嵌入式Web服务器**:如Tomcat或Jetty,无需额外部署。 - **命令行接口(CLI)**:用于快速原型开发。 - **运行...
起步依赖是预先打包好的Maven或Gradle依赖,开发者只需在项目中引入相应的起步依赖,就可以快速获得一组功能;自动配置则是Spring Boot根据项目类路径下的jar包自动配置相关组件;CLI则提供了快速创建和运行Spring ...
- ** profiles**: Spring Boot支持配置文件的多环境版本,如`application-dev.properties`(开发环境)和`application-prod.properties`(生产环境)。 5. **测试** - Spring Boot提供了丰富的测试支持,包括`@...
2. **自动配置(Auto Configuration)** SpringBoot 根据项目中的依赖来自动配置应用。比如,如果项目包含了 `spring-boot-starter-data-jpa`,那么 SpringBoot 就会自动配置相关的数据访问层,包括 JPA 和 ...
3. **自动配置(Auto Configuration)**:Spring Boot 根据类路径中的类和属性文件自动配置 Spring 容器,极大地减少了手动配置的工作量。 4. **命令行界面(CLI)**:提供了命令行工具,方便开发者进行快速原型开发...
- **Maven/Gradle插件**: Spring Boot提供了构建工具插件,简化打包和部署流程,支持Docker打包、JAR/WAR构建等。 9. **微服务架构** - **Spring Cloud**: 结合Spring Boot,可以构建分布式系统,如服务发现...
- `build.gradle` 或 `pom.xml` 文件:构建脚本,用于编译和打包AutoApi项目,通常对应Gradle或Maven构建系统。 使用AutoApi时,开发者需要先安装和配置好环境,然后在项目中引入AutoApi依赖,运行生成命令。生成的...
3. **自动配置(Auto Configuration)**: Spring Boot会根据项目类路径下的依赖自动配置Bean,减少了大量手动配置工作。 4. **Actuator**: 提供健康检查、审计、指标、日志和端点等监控和管理功能。 5. **YAML/...
7. **Maven或Gradle插件**:Spring Boot提供了Maven和Gradle的插件,可以帮助快速打包应用为可执行的jar或war,同时也支持运行和测试应用。 8. **YAML或Properties配置**:Spring Boot支持使用YAML或Properties格式...
4. **自动配置(Auto Configuration)**:SpringBoot根据类路径中的jar包和配置文件,自动进行相应的配置。例如,如果检测到`spring-boot-starter-data-jpa`,就会自动配置JPA和数据源。 5. **YAML与Properties配置...
现在有很多Java的Web框架可供选择,并且它们也都是免费的。例如: • Struts • Webwork • Tapestry • Spring MVC 以上框架都是非常优秀的。说实话,如果阿里巴巴网站在2001年开始,就有这么多可选择的话,...