上圖是本身的工程目錄結構。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
此時須要用到 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 介紹能夠參考官網文檔。
瞭解一門技術,之前喜歡用搜索引擎,如今愈來愈以爲仍是官網的第一手資料最靠譜,比搜索引擎更有效率。