pom.xml读本地Maven配置文件

可通过这种方式实现,不把一些敏感信息打入最终jar包,从而不暴露给最终用户。

项目yml文件相关部分:

复制代码
clientId:
  registerEnv: dev

pom.xml中相关部分如下。使用了groovy-maven-plugin 插件,并使用了SnakeYAML来解析yml文件:

xml 复制代码
   <build>
    。。。
     <plugins>
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>groovy-maven-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <source>
                                import org.yaml.snakeyaml.Yaml
                                import java.io.FileInputStream

                                def targetDir = new File("target")
                                if (!targetDir.exists()) {
                                    targetDir.mkdirs()
                                }

                                // 读取 application.yml中的值:
                                def yamlFile = new File(project.basedir, "src/main/resources/application.yml")
                                def yaml = new Yaml()
                                def config = yaml.load(new FileInputStream(yamlFile))
                                def env = config.clientId?.registerEnv

                                def urlMap = [    // 根据环境选择对应的URL(来自settings.xml)
                                                  "dev" : "${client.dev.url}",
                                                  "prod": "${client.prod.url}"
                                ]
                                def registerUrl = urlMap[env]

                                def response = new URL(registerUrl).text
                                def file = new File(targetDir, "license.txt")
                                file.write(response.trim())
                            </source>
                        </configuration>
                    </execution>
                </executions>
                <!-- SnakeYAML 依赖(用于解析 YAML) -->
                <dependencies>
                    <dependency>
                        <groupId>org.yaml</groupId>
                        <artifactId>snakeyaml</artifactId>
                        <version>2.0</version>
                    </dependency>
                </dependencies>
            </plugin>
            。。。

本地Maven的settings.xml相关部分如下,使用了Maven Profiles:

xml 复制代码
<settings>
。。。
	<profiles>
		<profile>
			<id>hanfu-register-client-url</id>
			<properties>
				<client.dev.url>http://127.0.0.1:8083/hanfu/registerClient</client.dev.url>
				<client.prod.url>http://xxx.xxx.xxx.xxx:25088/hanfu/registerClient</client.prod.url>
			</properties>
		</profile>
	</profiles>
	<activeProfiles>
		<activeProfile>hanfu-register-client-url</activeProfile>
	</activeProfiles>
</settings>

可见Maven Profiles不仅可以配置在软件项目的pom.xml中,如我博:根据OS自动加载不同的native库和本地jar包 ,也可以配置在maven的settings.xml文件中。

相关推荐
h***38181 天前
maven导入spring框架
数据库·spring·maven
while(1){yan}2 天前
图书管理系统(超详细版)
spring boot·spring·java-ee·tomcat·log4j·maven·mybatis
计算机毕设指导62 天前
基于微信小程序的考研资源共享系统【源码文末联系】
java·spring boot·后端·考研·微信小程序·小程序·maven
叶 落2 天前
[Maven基础课程]15_以 RuoYi 为例看下 Maven 多模块工程
maven·maven 基础课程·maven 基础
计算机毕设指导62 天前
基于微信小程序的直播带货商品数据分析系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
super_lzb3 天前
springboot打war包时将外部配置文件打入到war包内
java·spring boot·后端·maven
小毛驴8503 天前
Maven同时配置阿里云仓库和私有仓库
java·阿里云·maven
多米Domi0113 天前
0x3f 第23天 黑马web (前端三件套,maven,web入门、mysql)黑马反射注解 hot100普通数组
java·python·mysql·算法·leetcode·maven
zhanjixun3 天前
Spring Boot Maven项目构建Docker镜像
spring boot·docker·maven