您好,登錄后才能下訂單哦!
這篇文章主要介紹了Maven項(xiàng)目怎么打包的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Maven項(xiàng)目怎么打包文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
使用maven,制作jar文件、war文件、ear文件等非常簡(jiǎn)單。Maven 支持非常大的內(nèi)置打包列表。此外,它可以在 maven 中定義用戶(hù)定義的包裝。讓我們?cè)谶@篇文章中了解有關(guān) Maven 打包的所有信息。
Maven 支持構(gòu)建打包,如jar, ear, war...等。在 Maven 中,構(gòu)建什么是由打包屬性決定的。它是在<packaging></packaging>標(biāo)簽之間定義的。如果 pom.xml 中沒(méi)有打包標(biāo)簽,那么默認(rèn)情況下它會(huì)將打包類(lèi)型視為 jar。
<project><modelVersion>4.0.0</modelVersion><groupId>com.lici.maven</groupId><artifactId>maven-packaging</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging></project>
讓我們看看maven核心支持哪些封裝。
jar:這是默認(rèn)的打包方式,這個(gè)打包方式是用來(lái)構(gòu)建jar文件的。
war:這個(gè)包裝有助于創(chuàng)建一個(gè)網(wǎng)絡(luò)存檔文件。它用于創(chuàng)建 Web 應(yīng)用程序。
ear:此打包用于創(chuàng)建企業(yè)歸檔文件(ear)。ear 支持創(chuàng)建 j2ee 應(yīng)用程序,即 EJB 支持,JMS對(duì) ear 文件的支持。最后,ear 文件僅在 glassfish 或 JBoss 等應(yīng)用服務(wù)器上運(yùn)行。
pom:此包裝用于子模塊實(shí)現(xiàn)。包裝 pom 主要意味著沒(méi)有主要的人工制品。
maven-plugin:用于創(chuàng)建maven插件。
ejb:用于封裝EJB模塊。
rar:用于創(chuàng)建資源適配器存檔(RAR)文件。在 RAR 文件中,它包含帶有實(shí)現(xiàn)類(lèi)的 jar 文件和一個(gè) META-INF 文件夾,其中包含服務(wù)器特定的部署描述符和 ra.xml 文件,它是 rar 配置文件。
在外部插件和項(xiàng)目的幫助下,maven 支持許多額外的包裝。SWF,SWC包裝是其中少數(shù)。
接下來(lái),讓我們繼續(xù)看看如何使用 maven 創(chuàng)建自定義包裝。
在此之前,要了解 maven 自定義打包,需要對(duì) maven 生命周期有一個(gè)很好的了解。
現(xiàn)在讓我們開(kāi)始我們的新包創(chuàng)建編碼。
首先,我們需要為我們的新打包創(chuàng)建一個(gè)插件項(xiàng)目,并在其上添加maven插件創(chuàng)建依賴(lài)項(xiàng)。
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lici.maven</groupId> <artifactId>maven-anish-package</artifactId> <version>1.0</version> <packaging>maven-plugin</packaging> <properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <mavenFileManagementVersion>3.0.0</mavenFileManagementVersion> <mavenArchiverVersion>3.5.0</mavenArchiverVersion> <mavenVersion>3.1.0</mavenVersion> <javaVersion>7</javaVersion> </properties> <dependencies> <!-- all dependencies information --> </dependencies></project>
我們的插件項(xiàng)目的 pom.xml 已經(jīng)準(zhǔn)備好了。
讓我們繼續(xù)下一步,我們知道它為每個(gè)打包創(chuàng)建一個(gè)單獨(dú)的生命周期,它在META-INF/plexus/components.xml文件中定義。
在我們的例子中,我們正在創(chuàng)建名為“ anish ”的新包裝。'anish'打包實(shí)現(xiàn)的 components.xml如下所示。
<?xml version="1.0"?><!DOCTYPE component-set><component-set> <components> <component> <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role> <role-hint>anish</role-hint> <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping </implementation> <configuration> <phases> <process-resources> org.apache.maven.plugins:maven-resources-plugin:2.6:resources </process-resources> <compile> org.apache.maven.plugins:maven-compiler-plugin:3.1:compile </compile> <process-test-resources> org.apache.maven.plugins:maven-resources-plugin:2.6:testResources </process-test-resources> <test-compile> org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile </test-compile> <test> org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test </test> <package> com.lici.maven:maven-anish-package:1.0:anish </package> <install> org.apache.maven.plugins:maven-install-plugin:2.4:install </install> <deploy> org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy </deploy> </phases> </configuration> </component> <component> <role>org.apache.maven.artifact.handler.ArtifactHandler</role> <role-hint>anish</role-hint> <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation> <configuration> <type>anish</type> <language>java</language> <addedToClasspath>true</addedToClasspath> </configuration> </component> </components></component-set>
在上面的components.xml中,它包含了除了打包階段之外的所有 jar 打包階段。它使用自定義實(shí)現(xiàn)的打包階段。
<package> com.lici.maven:maven-anish-package:1.0:anish </package>
這里的階段定義com.lici.maven:maven-anish-package:1.0顯示了插件項(xiàng)目的groupId:artifactId:version。最后一個(gè)值anish是創(chuàng)建的 mojo bean 名稱(chēng),它是使用 @Mojo Annotation 創(chuàng)建的。
所以我們創(chuàng)造了我們的新包裝。
接下來(lái),讓我們將包應(yīng)用到一個(gè)新的 maven 項(xiàng)目上。所以創(chuàng)建了一個(gè)新項(xiàng)目,它的 pom.xml 如下所示。
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lici.maven</groupId> <artifactId>maven-packaging</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>anish</packaging> <build> <plugins> <plugin> <groupId>com.lici.maven</groupId> <artifactId>maven-anish-package</artifactId> <version>1.0</version> <!--declare that this plugin contributes the component extensions--> <extensions>true</extensions> </plugin> </plugins> </build> </project>
Maven不知道我們新創(chuàng)建的包裝。所以我們需要通過(guò)使用插件標(biāo)簽來(lái)告訴我們新創(chuàng)建的包裝。在插件內(nèi)部,我們將擴(kuò)展標(biāo)志定義為 truetrue<extensions>true</extensions>.如果您正在創(chuàng)建新包裝,則擴(kuò)展標(biāo)志應(yīng)設(shè)置為 true。
添加插件后,可以將打包稱(chēng)為anishanish<packaging>anish</packaging>.在構(gòu)建執(zhí)行中,輸出基于anish打包配置創(chuàng)建。
關(guān)于“Maven項(xiàng)目怎么打包”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Maven項(xiàng)目怎么打包”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。