(一)Maven之使用入門

目錄java

今天是端午節哦,昨天大學同窗舉個了會。魚頭泡餅賊拉香,嗯哼,有點跑題了;以後去了同窗家裏坐了坐;發現同我有同樣的書,即:《maven實戰》;記得是從二手網店淘到的,已經買了有小半年,還只看了個目錄; 打算用個端午的一天時間給它啃下來。。至此,立了一個小Flag...apache

image.png

目錄安全

maven的規範:

默認狀況下:maven

  1. 項目主代碼位於 src/main/java 目錄下,,編譯後在target/classes下
  2. 項目測試代碼位於 src/test/java ,編譯後在target/test-class下。
  3. Maven構建的全部輸入都在target/目錄下。
  4. 自動訪問Maven的中央倉庫, http://repol.maven.org/maven2
  5. 默認打包類型jar, 主代碼打包根據 artifact-version.jar規則命名打包輸出到 target/目錄下。
  6. 在項目根目錄下放置pom.xml

注: 如pom.xml中的scope(依賴的範圍),默認值是compile; 若是你看到指定爲test,即:該依賴只對測試代碼有效,若在主代碼中使用,會形成編譯錯誤。測試

mvn clean compile

背後的執行過程:ui

  • 先執行clean:clean任務,展出target/目錄。
  • 再執行resources:resources任務,處理項目資源。
  • 最後執行compiler:compile任務,將項目主代碼編譯至target/classes目錄。
    注:上文說起的如 clean:clean ...指的是Maven的插件和目標,eg: compiler:compile是compiler插件的complie目標。
mvn clean test

背後的執行過程:插件

注: 在執行test以前,Maven先自動執行項目主資源處理、主代碼編譯、測試資源處理、測試代碼編譯等工做,是就是Maven生命週期的特徵。即,會先執行mvn clean compile背後的命令操做。code

  • 先執行resources:testResources任務
  • 再執行compiler:testCompile任務
  • 最後執行surefire:test任務,執行測試並輸出測試報告。
    注:上文說起的如 clean:clean ...指的是Maven的插件和目標,eg: compiler:compile是compiler插件的complie目標。
mvn clean package

背後的執行過程:
執行jar:jar任務,負責打jar包。orm

mvn clean install

做用:將項目輸出的jar包安裝到Maven本地倉庫中,供其餘Maven項目使用。xml

答疑解惑模塊

1.爲何pom.xml都須要手動配置compiler插件呢?

例如:
<project>
...
<bulid>
    <plugins>
        <plugin>
            <groupId> org.apache.maven.plugins
            </groupId>
            <artifactId>
            maven-compiler-plugin
            </artifactId>
            <configuration>
                <source> 1.8  </source>
                <target> 1.8 </target>
            </configuration>
        </plugin>
    </plugins>
</build>
...
</project>

解: 因爲歷史緣由,Maven的核心插件之一compiler插件默認只支持Java 1.3,所以須要配置該插件使其支持當前的JDK版本。

2.如何生成可執行的jar文件?

注: 默認生成的jar包不能直接運行,由於沒有將main方法的類信息添加到manifest中[在jar文件中META-INF/MANIFEST.MF文件中沒有Main-Class的配置]。須要藉助maven-shade-plugin插件。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <!-- 打成可執行的jar包 的主方法入口--> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.golden.MainTest</mainClass> </transformer> </configuration> </execution> </executions> </plugin>

使用Archetype生成項目骨架

mvn archetype:generate

背後的執行過程:

  • Maven2並不建議用改命令,這可能不是安全的,Maven2會自動下載最新版本Archetype插件,可能不穩定。而Maven3會自動下載最新最穩定的版本,因此能夠放心使用。Maven2建議手動指定,命令格式爲:mvn groupId:artifactId:version:goal[插件目標], eg:mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
相關文章
相關標籤/搜索