国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

學習Maven之PropertiesMavenPlugin

2019-11-14 15:34:35
字體:
來源:轉載
供稿:網友


1.PRoperties-maven-plugin是個什么鬼?

介紹前我們先看一個問題,比如我們有一個maven項目結構如下:

一般我們都把一些配置文件放到像src/main/resources/jdbc.properties這樣的文件中。但是文件里我們更多的放的還是變量,內容如下:

jdbc.driverClassName=${jdbc.driverClassName}jdbc.url=${jdbc.url}jdbc.username=${jdbc.username}jdbc.passWord=${jdbc.password}jdbc.validationQuery=${jdbc.validationQuery}

具體的值我們會放到pom.xml中,用<properties>來配置,如下所示代碼:

<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd">	<modelVersion>4.0.0</modelVersion>	<groupId>com.qyf404</groupId>   <artifactId>learn-maven</artifactId>	<version>1.0-SNAPSHOT</version>	<profiles></profiles>	<properties>		<jdbc.driverClassName>com.MySQL.jdbc.Driver</jdbc.driverClassName>		<jdbc.url>jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true</jdbc.url>		<jdbc.username>root</jdbc.username>		<jdbc.password></jdbc.password>		<jdbc.validationQuery>SELECT 1 + 1</jdbc.validationQuery>	</properties>	<build>		<resources>			<resource>				<filtering>true</filtering>				<directory>${project.basedir}/src/main/resources</directory>				<includes>					<include>*.properties</include>				</includes>			</resource>		</resources>	</build></project>

按照上面的方式配置。我們執行mvn package后,在target/classes/jdbc.properties里可以看到配置文件被成功替換。

由于某些原因(比如配置文件項比較多,為了讓pom.xml更精簡),我們希望把這些配置項提取到一個properties文件中進行配置。
這時候就需要用到properties-maven-plugin了。properties-maven-plugin可以在執行maven命令時,讀取指定properties文件中的配置項,來實現和pom.xml中配置<properties>一樣的效果。


2.properties-maven-plugin怎么用?

還拿上面的例子說,比如我們把pom.xml中的配置項放到一個全局的my.properties中。

profiles/dev/my.properties文件內容如下:

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=truejdbc.username=rootjdbc.password=jdbc.validationQuery=SELECT 1 + 1

pom.xml我們把插件加進去,并把之前里面的配置項注釋掉.

<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qyf404</groupId><artifactId>learn-maven</artifactId><version>1.0-SNAPSHOT</version><!--<properties>-->    <!--<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>-->    <!--<jdbc.url>jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true</jdbc.url>-->    <!--<jdbc.username>root</jdbc.username>-->    <!--<jdbc.password></jdbc.password>-->    <!--<jdbc.validationQuery>SELECT 1 + 1</jdbc.validationQuery>--><!--</properties>--><build>    <resources>        <resource>            <filtering>true</filtering>            <directory>${project.basedir}/src/main/resources</directory>            <includes>                <include>*.properties</include>            </includes>        </resource>    </resources>    <plugins>        <plugin>            <groupId>org.codehaus.mojo</groupId>            <artifactId>properties-maven-plugin</artifactId>            <version>1.0-alpha-2</version>            <executions>                <execution>                    <id>default-cli</id>                    <phase>initialize</phase>                    <goals>                        <goal>read-project-properties</goal>                    </goals>                    <configuration>                        <files>                            <file>${user.dir}/profiles/dev/my.properties</file>                        </files>                    </configuration>                </execution>            </executions>        </plugin>    </plugins></build></project>

我們執行mvn package后,在target/classes/jdbc.properties里可以看到配置文件被成功替換。


3.進階

pom.xml里的配置項提取到properties文件中,這是properties-maven-plugin干的事情。但是我們用properties-maven-plugin要達到更好的效果。

想一個場景:

  • 我們的項目有開發環境的配置,測試環境的配置;
  • 而且開發環境是mysql數據庫,測試環境是hsqldb數據庫;
  • 最后還要在一個文件中統一打印出配置項內容。

我們可以通過maven的profile來配上properties-maven-plugin實現針對不同環境的快速打包。

我們把項目做個改造,結構如下:

profiles/dev/my.properties內容如下:

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=truejdbc.username=rootjdbc.password=jdbc.validationQuery=SELECT 1 + 1

profiles/test/my.properties內容如下:

jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriverjdbc.url=jdbc:hsqldb:hsql://localhost/stocktestjdbc.username=rootjdbc.password=jdbc.validationQuery=SELECT 1 + 1

pom.xml 內容如下:

<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qyf404</groupId><artifactId>learn-maven</artifactId><version>1.0-SNAPSHOT</version><!--<properties>--><!--<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>--><!--<jdbc.url>jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true</jdbc.url>--><!--<jdbc.username>root</jdbc.username>--><!--<jdbc.password></jdbc.password>--><!--<jdbc.validationQuery>SELECT 1 + 1</jdbc.validationQuery>--><!--</properties>--><build>    <resources>        <resource>            <filtering>true</filtering>            <directory>${project.basedir}/src/main/resources</directory>            <includes>                <include>*.properties</include>            </includes>        </resource>    </resources>    <plugins>        <plugin>            <groupId>org.codehaus.mojo</groupId>            <artifactId>properties-maven-plugin</artifactId>            <version>1.0-alpha-2</version>            <executions>                <execution>                    <id>default-cli</id>                    <phase>initialize</phase>                    <goals>                        <goal>read-project-properties</goal>                        <goal>write-project-properties</goal>                    </goals>                    <configuration>                        <files>                            <!--<file>${user.dir}/profiles/dev/my.properties</file>-->                            <file>${user.dir}/profiles/${profile.id}/my.properties</file>                        </files>                        <!--輸出全部配置項到指定文件-->                        <outputFile>${build.directory}/profile.properties</outputFile>                    </configuration>                </execution>            </executions>        </plugin>    </plugins></build><profiles>    <profile>        <id>dev</id>        <activation>            <activeByDefault>true</activeByDefault>        </activation>        <properties>            <profile.id>dev</profile.id>        </properties>        <dependencies>            <dependency>                <groupId>mysql</groupId>                <artifactId>mysql-connector-java</artifactId>                <version>5.1.31</version>                <scope>runtime</scope>            </dependency>        </dependencies>    </profile>    <profile>        <id>test</id>        <properties>            <profile.id>test</profile.id>        </properties>        <dependencies>            <dependency>                <groupId>org.hsqldb</groupId>                <artifactId>hsqldb</artifactId>                <version>2.2.6</version>                <scope>runtime</scope>            </dependency>        </dependencies>    </profile></profiles></project>

我們現在只需要執行命令mvn package -Pdev或者mvn package就可以打一個開發的包。

執行命令mvn package -Ptest就可以打一個測試用的包。

而且在target/profile.properties里查看項目打包的全部maven用到的配置項。內容如下:

#Properties#Wed Sep 23 19:06:47 CST 2015jdbc.url=jdbc/:mysql/://localhost/stock?createDatabaseIfNotExist/=true&amp;useUnicode/=true&amp;characterEncoding/=utf-8&amp;autoReconnect/=truejdbc.username=rootjdbc.validationQuery=SELECT 1 + 1jdbc.password=profile.id=devjdbc.driverClassName=com.mysql.jdbc.Driver

示例代碼github地址: https://github.com/qyf404/learn-maven/tree/properties-maven-plugin

更多關于properties-maven-plugin請參閱這里:http://www.mojohaus.org/properties-maven-plugin/index.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塔城市| 荥阳市| 宜阳县| 津南区| 昭觉县| 灵丘县| 太谷县| 牡丹江市| 闸北区| 临城县| 古丈县| 香港 | 桦川县| 东兰县| 乌拉特中旗| 永城市| 达州市| 增城市| 昌黎县| 白银市| 乌审旗| 中阳县| 泌阳县| 临安市| 青川县| 阳西县| 隆林| 肇源县| 海宁市| 建始县| 衡山县| 利津县| 阿拉善右旗| 新兴县| 肥东县| 蒙自县| 河西区| 德阳市| 博客| 榆树市| 永定县|