maven pom文件樣例

本篇給出maven3的pom文件樣例。包括:

  • 項目打包方式;
  • 項目如何打成可執行jar包;
  • 如何預定義一些常量,如版本號;
  • 生成站點(site),如生成javadoc文件;
  • 如何自定義項目源代碼的主目錄;
  • 如何自定義項目測試代碼的主目錄;
  • 如何添加項目依賴的jar包,並指定依賴範圍;
  • 如何添加可選依賴;
下面直接貼出樣例代碼。

<pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><?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>cn.pri.qk</groupId>
    <artifactId>QSProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>A Test Project</name>
    <!--定義項目的打包方式,可選值爲:jar(默認), war, pom, apk, 如果一個項目是父項目,那麼必須設置爲pom。-->
    <packaging>jar</packaging>
    <!--使用<properties>元素來定義一些常量,即便於統一修改,又能減少出錯的機率-->
    <properties>
        <project.version>1.0</project.version>
        <jdk.version>1.8</jdk.version>
        <springFramework.version>2.5.6</springFramework.version>
    </properties>

    <reporting>
        <plugins>
            <!--這個插件用來爲主目錄的代碼生成javadoc文件,可參見:
            http://maven.apache.org/plugins/maven-site-plugin/examples/configuring-reports.html
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9</version>
                <reportSets>
                    <reportSet>
                        <!-- by default, id = "default" -->
                        <reports>
                            <!-- select non-aggregate reports -->
                            <report>javadoc</report>
                            <report>test-javadoc</report>
                        </reports>
                    </reportSet>
                    <reportSet>
                        <!-- aggregate reportSet, to define in poms having modules -->
                        <id>aggregate</id>
                        <inherited>false</inherited>
                        <!-- don't run aggregate in child modules -->
                        <reports>
                            <report>aggregate</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>

    </reporting>

    <build>
        <!-- 項目源代碼的主目錄 -->
        <sourceDirectory>src/main/java</sourceDirectory>
        <!-- 項目測試代碼的主目錄 -->
        <testSourceDirectory>src/test/java</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 這個插件用來將項目打成可運行的jar包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 指定可運行jar包的入口類 -->
                                    <mainClass>cn.pri.qk.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!-- 添加一些依賴的jar包 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <!-- 該依賴只對測試有效, 可選值爲:compile(默認值,在所有的classpath中均可用), provided, runtime, test, system. http://blog.sina.com.cn/s/blog_67aaf4440101dwr8.html-->
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jdom</groupId>
            <artifactId>jdom2</artifactId>
            <version>2.0.6</version>
            <scope>compile</scope>
        </dependency>
        <!--optional選項用來解決互斥的依賴。如下面這兩個依賴是可選依賴,但其他項目依賴當前項目時,該依賴不會被傳遞過去.使用可選依賴就意味着項目裏存在兩個或多個互斥的特性, 這不滿足單一職責的原則,所以應儘量避免使用可選依賴-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.10</version>
            <optional>true</optional>
            <!--<exclusions>元素用來移除當前依賴項所依賴的部分依賴項,因爲那些依賴項有可能是某個project的SNAPSHOT版本或需要收費-->
            <exclusions>
                <exclusion>
                    <groupId>mysql</groupId>
                    <artifactId>project</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>8.4-701.jdbc3</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <!--使用預定義好的常量-->
            <version>${springFramework.version}</version>
        </dependency>
    </dependencies>
</project>








發佈了42 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章