2.1 maven-resources-plugin複製資源插件
如果您正在構建 Web 應用程序,那麼您將在其中擁有一堆不同的資源。這些是 jar 庫、jsp servlet 和設置文件。當然,這是一堆html
, css
,之類的靜態文件js
,還有各種圖片。
默認情況下,在構建項目時,Maven 會簡單地將所有文件從文件夾複製src/main/resources
到目標目錄。如果您想更改此行為,那麼該插件會幫助您maven-resources-plugin
。
此類插件的示例代碼:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals>
<configuration> <outputDirectory> ${basedir}/target/resources </outputDirectory> <resources>
<resource> instructions for copying a resource 1 </resource> <resource> instructions for copying a resource 2 </resource> <resource> instructions for copying a resource N </resource>
</resources> </configuration>
</execution>
</executions>
</plugin>
該插件將在驗證階段調用。使用該標籤,<outputDirectory>
您可以設置插件複製<resources>
. 這就是插件可以發揮最大作用的地方。
2.2 使用 maven-resources-plugin 過濾資源
插件資源不僅可以以文件的形式指定,還可以立即以目錄的形式指定。此外,可以向目錄添加一個掩碼,指定該目錄中的哪些文件將包含在該資源中。
例子:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
</resource>
兩個星號作為掩碼代表任意數量的目錄。在上面的示例中,目錄src/main/resources/images
(及其子目錄)中包含的所有 png 文件都將作為資源數據。
如果你想排除一些文件,你可以使用exclude
. 例子:
<resource>
<directory>src/main/resources/images</directory>
<includes> <include>**/*.png</include> </includes>
<excludes> <exclude>old/*.png</exclude> </excludes>
</resource>
標籤按順序應用:首先,包含文件中指定的包含文件將被添加到資源中,然後排除文件將從該列表中排除。
但這還不是全部。該插件可以查看文件內部(當然,如果它們是文本)。並且,例如,將application.properties
所需版本的程序集添加到文件中。為了讓插件處理文件的內容,您需要指定參數<filtering>true</filtering>
.
例子:
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
<includes> <include>**/*. properties </include> </includes>
</resource>
有關此插件的更多詳細信息,請訪問以下鏈接: https: //maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
2.3 maven-source-plugin源碼包含插件
另一個有用的插件 -maven-source-plugin
允許您在程序集中包含 java 文件的源代碼。為了什麼?
問題是,除了 Web 應用程序之外,還有大量的庫是使用 Maven 組裝的。許多 Java 項目遵循開源的概念,並以自己的源代碼分發到 Java 社區。
為什麼需要一個單獨的插件?為什麼你不能只複製源代碼,僅此而已?
首先,在任何復雜的項目中,源代碼都可以存儲在多個地方。
其次,經常使用基於xml規範的源碼生成,這樣的源碼也需要包含在程序集中。
第三,您可以決定不在程序集中包含任何特別機密的文件。
使用 maven-source-plugin 插件的例子:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
2.4 maven-dependency-plugin依賴複製插件
您可能還需要在構建項目時巧妙地複制依賴項(庫)。為此使用了一個插件maven-dependency-plugin
。
例子:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<outputDirectory> ${project.build.directory}/lib/ </outputDirectory>
</configuration>
<executions>
<execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution>
</executions>
</plugin>
在此示例中,寫入了插件的默認行為 - 將庫複製到${project.build.directory}/lib
.
執行部分說明插件將在構建階段調用 - 包、目標 - 複製依賴項。
一般來說,這個插件有相當多的目標,這裡是最流行的:
1個 | 依賴:分析 | 依賴性分析(使用過、未使用過、指定過、未指定過) |
2個 | 依賴:分析重複 | 識別重複依賴 |
3個 | 依賴:解決 | 所有依賴項的解析(定義) |
4個 | 依賴:解決插件 | 所有插件的權限(定義) |
5個 | 依賴:樹 | 顯示依賴樹 |
您還可以在配置部分設置其他參數:
1個 | 輸出目錄 | 將復制依賴項的目錄 |
2個 | 覆蓋發布 | 創建發佈時標記以覆蓋依賴項 |
3個 | 覆蓋快照 | 標記以覆蓋具有 SNAPSHOT 的非終端依賴項 |
4個 | overWriteIfNewer | 標記以用較新版本覆蓋庫 |
例子:
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
<overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer>
</configuration>
默認情況下<overWriteReleases>
,and<overWriteSnapshots>
為假,for<overWriteIfNewer>
為真。
GO TO FULL VERSION