由於當前公司在組織進行項目基本結構的整理,將以前通過eclipse/ ant 方式構建的項目向maven上遷移,於是便進行maven項目方面的調研。
對於maven項目,基本的結構已經在標準文件中:
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
src/main/java | Application/Library sources |
src/main/resources | Application/Library resources |
src/main/filters | Resource filter files |
src/main/webapp | Web application sources |
src/test/java | Test sources |
src/test/resources | Test resources |
src/test/filters | Test resource filter files |
src/it | Integration Tests (primarily for plugins) |
src/assembly | Assembly descriptors |
src/site | Site |
LICENSE.txt | Project's license |
NOTICE.txt | Notices and attributions required by libraries that the project depends on |
README.txt | Project's readme |
由於我們使用git作爲版本管理工具,在使用maven作爲build工具時,需要將IDE的工程描述文件以及項目生成的target/,bin/目錄忽略掉,因此.gitignore文件必不可少,以下內容可以作爲項目的.gitignore文件範本:
# generated files where run in local machine
bin/
target/
# eclipse project description files
.settings/
.project
# idea project description files
.idea/
*.iml
### Java template
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
<profiles> <profile> <id>dev</id> <properties> <active.profile>dev</active.profile> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <active.profile>test</active.profile> </properties> </profile> <profile> <id>product</id> <properties> <active.profile>product</active.profile> </properties> </profile> </profiles>
<build> <finalName>example</finalName> <filters> <filter>src/main/filters/filters-${active.profile}.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
- filters-dev.properties
- filters-test.properties
- filters-product.properties
dbc.url=${pom.jdbc.url}
jdbc.username=${pom.jdbc.username}
jdbc.passworkd=${pom.jdbc.password}
pom.jdbc.url=dev
pom.jdbc.username=dev
pom.jdbc.password=dev
<sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src/main/resource</directory> <excludes> <exclude>**/*.java</exclude> <exclude>conf/**</exclude> </excludes> </resource> <resource> <directory>package/${package.environment}</directory> <filtering>true</filtering> </resource> </resources>
<profiles> <profile> <id>dev</id> <properties> <package.environment>dev</package.environment> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <package.environment>test</package.environment> </properties> </profile> </profiles>
<repository> <id>mvnrepository</id> <name>mvnrepository</name> <url>http://www.mvnrepository.com</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository>
-U,--update-snapshots Forces a check for missing
releases and updated snapshots on
remote repositories