Maven在POM中可以用的Properties大約可以分為下列幾種
(1)Build in Properties
${basedir}:取得mvn執行時pom.xml的所在目錄
(2)Project Properties
基本上pom.xml中所有的tag都是算在這類,只要加上project這個prefix即可。
${project.name}:可以拿到<name>yourprojectname</name>中的yourprojectname。
${project.version}:可以拿到<version>buildversion</version>中的buildversion。
${project.build.directory}:可以拿到<build><directory>builddirectory</directory></build>中的builddirectory。
而要取得parent的pom.xml資訊,只要將prefix改為parent.project即可。
(3)System Environment Variables
使用env這個prefix,可以取得系統中的變數。
基本上,在console下打env,顯示出的變數只要加上env.這個“prefix“,就能在pom.xml中使用。
${env.M2_HOME}:可以取得Maven的安裝目錄
${env.CLICOLOR}:可以取得mac的terminal是否要顯示顏色。
(4)Java Environment Properties
請參考http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties(),其中所有的Key都可以被pom.xml使用。
比較有機會用到的像是
${os.name}:可以知道系統用的OS為何。
${file.separator}:目錄的分隔符號。
要知道這些Properties到底是什麼值其實也有點麻煩,如果沒在pom.xml裡執行也不能確定到底是什麼,但是Maven本身也沒有提供任何方式可以顯示這些Properties。
所以只好利用Antrun中執行echo這task來顯示囉,這是我最直接能想到的,如果有更好的方法也請不吝告知。
在pom.xml中上加
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> <executions> <execution> <phase>initialize</phase> <configuration> <tasks> <echo>basedir:${basedir}</echo> <echo>project.name:${project.name}</echo> <echo>project.version:${project.version}</echo> <echo>project.packaging:${project.packaging}</echo> <echo>project.build.finalName:${project.build.finalName}</echo> <echo>project.build.directory:${project.build.directory}</echo> <echo>project.build.outputDirectory:${project.build.outputDirectory}</echo> <echo>env.M2_HOME:${env.M2_HOME}</echo> <echo>env.CLICOLOR:${env.CLICOLOR}</echo> <echo>settings.localRepository:${settings.localRepository}</echo> <echo>java.home:${java.home}</echo> <echo>java.version:${java.version}</echo> <echo>java.vendor:${java.vendor}</echo> <echo>os.name:${os.name}</echo> <echo>os.arch:${os.arch}</echo> <echo>os.version:${os.version}</echo> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build>自行修改<tasks>中的<echo> task成你要的,然後只要執行
>$ mvn initialize就可以看到結果囉。
沒有留言:
張貼留言