maven 學習之 pom.xml

上圖是本身的工程目錄結構。html

只要在父pom中,配置 module 屬性後,而且在子模塊的 pom 中聲明 parent 屬性便可。java

<parent>
    <artifactId>maven-learn</artifactId>
    <groupId>com.lxh.learn</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
複製代碼

腳本資源

因爲腳本文件不屬於項目文件,因此並不須要將其打到 jar 包裏面,此時就須要經過配置屬性將其拷貝到輸出目錄,即jar包外面。apache

<build>
    <scriptSourceDirectory>./bin/hello.sh</scriptSourceDirectory>
</build>
複製代碼

打包插件

maven 提供了各類各樣的插件,能夠方便咱們的構建工做,因此每當咱們須要將項目的構建自動化時,便可以利用maven插件屬性,免去重複造輪子的麻煩。插件介紹在maven官網中有詳細說明,此處介紹幾個本身經常使用的特性:maven

maven.apache.org/plugins/ind…ui

不把某些包的內容打到 jar 包裏

此時須要用到 maven-jar-plugin 插件,這個插件專門用來打包。項目結構如圖:搜索引擎

若是我不想把 exclude 目錄中的類打到jar包中,則可使用以下配置方式:spa

對jar包進行反編譯能夠看到,Test 這個類不在jar包中:

主清單屬性

咱們在使用 java -jar 命令執行 jar 包時,有時候會遇到錯誤提示:沒有指定主清單屬性。插件

這是爲何呢?code

原來在每一個打好的 jar 包中,都有一個叫 MANIFEST.MF 的文件。這個文件有什麼用處呢?orm

主要是指定了一些與 jar 包相關的屬性,如圖所示:

而若是咱們想執行一個可執行的 jar 包,則必須指定主類名稱,如圖所示:

怎麼指定?仍是經過對一個插件的配置來實現。

maven-shade-plguin,經過 maven-shade-plugin 生成一個 uber-jar,它包含全部的依賴 jar 包。在打包階段綁定,用來建立一個 shaded jar 包,此 jar 包會把全部依賴的包打進來。

此插件提供了不少的 transforme,其中的一個ManifestResourceTransformer 用來操做 MANIFEST.MF ,並在文件中添加 entry 。

其餘 transformer 介紹能夠參考官網文檔。

總結

瞭解一門技術,之前喜歡用搜索引擎,如今愈來愈以爲仍是官網的第一手資料最靠譜,比搜索引擎更有效率。

相關文章
相關標籤/搜索