如何使用 Maven 为不同的配置文件执行任务
how to perform task for different profiles using maven
我是 Maven 新手。
我想为不同的用户执行数据库连接,所以我的问题是我应该在哪里提供这个JDBC连接以及如何为不同的用户提供这个连接?
我知道如何为不同的用户提供配置文件,但我应该在哪里执行数据库连接以及如何调用它?
最好的方法是将您的数据库连接属性(如 username/password、url 等)设置为外部。在配置文件中,您可以为每个用户定义属性值,并使用 Maven 资源过滤来设置它们。
例如,在您的 Maven 项目中,您会有一个配置目录(在 src/config/settings.prp
中),其中包含以下条目:
userName = ${userName}
password = ${password}
db-driver = ${dbDriver}
db-url = ${dbUrl}
在 pom 中你会有
<project ...>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>filter-db-settings</id>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/config</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/config</directory>
</resource>
<filtering>true</filtering>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugins>
</build>
<profiles>
<profile>
<id>user-A</id>
<properties>
<userName>userA</userName>
<password>secret</password>
<dbDriver>com.driver.db</dbDriver>
<dbUrl>jdbc://db-url</dbUrl>
</properties>
</profile>
<profiles>
</project>
该插件将过滤 src/config
中的文件,并用您的配置文件中指定的值替换 Maven 占位符。由于配置文件包含密码,您可以将其移动到您的 settings.xml
,这样它就不会与项目本身一起签入,可能会将密码暴露给不受欢迎的各方。
警告:上面的插件还没有验证,所以可能包含小错误。
最佳做法是将 属性 文件 NOT 放入生成的工件中。通过这样做,您可以自由地为不同的用户使用相同的工件,您唯一需要更改的是外部 属性 文件中的属性(将在工件旁边提供给用户)。
以下文章介绍了如何使用 spring Externalized Configuration 外部化属性。
我是 Maven 新手。
我想为不同的用户执行数据库连接,所以我的问题是我应该在哪里提供这个JDBC连接以及如何为不同的用户提供这个连接?
我知道如何为不同的用户提供配置文件,但我应该在哪里执行数据库连接以及如何调用它?
最好的方法是将您的数据库连接属性(如 username/password、url 等)设置为外部。在配置文件中,您可以为每个用户定义属性值,并使用 Maven 资源过滤来设置它们。
例如,在您的 Maven 项目中,您会有一个配置目录(在 src/config/settings.prp
中),其中包含以下条目:
userName = ${userName}
password = ${password}
db-driver = ${dbDriver}
db-url = ${dbUrl}
在 pom 中你会有
<project ...>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>filter-db-settings</id>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/config</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/config</directory>
</resource>
<filtering>true</filtering>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugins>
</build>
<profiles>
<profile>
<id>user-A</id>
<properties>
<userName>userA</userName>
<password>secret</password>
<dbDriver>com.driver.db</dbDriver>
<dbUrl>jdbc://db-url</dbUrl>
</properties>
</profile>
<profiles>
</project>
该插件将过滤 src/config
中的文件,并用您的配置文件中指定的值替换 Maven 占位符。由于配置文件包含密码,您可以将其移动到您的 settings.xml
,这样它就不会与项目本身一起签入,可能会将密码暴露给不受欢迎的各方。
警告:上面的插件还没有验证,所以可能包含小错误。
最佳做法是将 属性 文件 NOT 放入生成的工件中。通过这样做,您可以自由地为不同的用户使用相同的工件,您唯一需要更改的是外部 属性 文件中的属性(将在工件旁边提供给用户)。
以下文章介绍了如何使用 spring Externalized Configuration 外部化属性。