1. 程式人生 > >maven父子專案使用assembly外掛打包

maven父子專案使用assembly外掛打包

1、使用assembly打包,當釋出專案時,需要將程式的jar包、依賴的jar包、執行指令碼、配置檔案等一起釋出,就需要使用maven的assembly外掛,將專案釋出為zip包或tar.gz包,網上介紹的使用assembly打包都是單個專案的,沒有介紹父子專案打包了,所以試了好久,後來才發現,assembly打包不區分父子專案還是單獨專案,哪個專案需要打包就在哪個專案的pom中配置assembly即可,比如我的專案中,parent和base都不需要打包,只要hotword和rankinglist需要打包,所以只在hotword和rankinglist專案的pom檔案新增如下配置即可,然後在子專案的相應目錄下新增assembly.xml

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                       <id>make-zip</id>
                        <!--繫結到package生命週期階段上 -->
                       <phase>package</phase>
                        <goals>
                            <!--繫結到package生命週期階段上 -->
                           <goal>single</goal>
                        </goals>
                        <configuration>
                        <!-- 描述檔案路徑 -->
                            <descriptors>
                               <descriptor>src/main/assembly/assembly.xml</descriptor>
                           </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
</plugins>


2、assembly.xml檔案的配置

<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
	<id>distribution</id>
	<formats>
		<format>zip</format>
	</formats>
	<fileSets>
		<fileSet>
			<directory>${project.basedir}/src/main/scripts</directory>
			<outputDirectory>/</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>${project.basedir}/lib</directory>
			<outputDirectory>/lib</outputDirectory>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<useProjectArtifact>true</useProjectArtifact>
			<outputDirectory>lib</outputDirectory>
			<!-- 將scope為runtime的依賴包打包到lib目錄下。 -->
			<scope>runtime</scope>
		</dependencySet>
		<dependencySet>
			<useProjectArtifact>true</useProjectArtifact>
			<outputDirectory>lib</outputDirectory>
			<!-- 將scope為runtime的依賴包打包到lib目錄下。 -->
			<scope>system</scope>
			<includes>
			    <include>*:jar</include>
			</includes>
		</dependencySet>
	</dependencySets>
</assembly>

注意如果前面有依賴包是本地jar包,這裡打包時就遇到問題了,本地jar包scope是system,但assembly打包預設是把scope為runtime的jar包打進zip中,所以不能將本地jar包壓進zip,網上給的建議都是把本地的jar包安裝到本地maven庫,最終我也妥協了。

3、安裝jar包到本地maven庫,以jieba分詞為例

1)到github上下載jieba分詞的原始碼

2)進入jieba分詞專案的根目錄,執行mvn install命令,就會自動編譯打包並安裝到本地maven庫,但jieba分詞專案的pom檔案中有登入驗證,直接執行install會提示輸入密碼,否則報錯,只需要將pom檔案中關於maven-gpg-plugin的配置註釋掉,再執行mvn install即可

3)此時,依賴於jieba分詞的專案的dependency配置就不需要scope和path了,改為如下即可

<dependency>
       <groupId>com.huaban</groupId>
       <artifactId>jieba-analysis</artifactId>
       <version>1.0.3-SNAPSHOT</version>
   <!--<scope>system</scope> 
       <systemPath>${project.basedir}/lib/jieba-analysis-1.0.3-SNAPSHOT.jar</systemPath>-->
</dependency>


相關推薦

maven父子專案使用assembly外掛打包

1、使用assembly打包,當釋出專案時,需要將程式的jar包、依賴的jar包、執行指令碼、配置檔案等一起釋出,就需要使用maven的assembly外掛,將專案釋出為zip包或tar.gz包,網上介紹的使用assembly打包都是單個專案的,沒有介紹父子專案打包了,所以

Maven父子專案打包子專案出現Failed to collect dependencies問題

Maven父子專案打包子專案出現Failed to collect dependencies問題 使用Idea建立Springboot專案多個模組打包,因為是第一次使用,遇到了一些問題,記錄一下。 錯誤如下: Failed to execute goal on project project

MavenMaven系列(二)——利用assembly外掛打包

在maven中有幾種方法打包專案,在之前的一篇部落格中【Java】打包Jar包並用指令碼執行,已經介紹了怎麼在沒有maven外掛的情況下,怎麼打包專案,並執行的。 而本篇則是在上一篇文章【Maven】Maven系列(一)——環境安裝配置和新建maven專案之後

國慶來個maven父子專案建立

Maven是一個非常實用的專案管理結構,自己也實用maven開發許久,但是還沒有真正自己建立一個父子專案來實踐實踐,國慶假期歸來,閒來無事自己動手建立一個試一試, 環境:eclipse+maven3.3+JDK7 1、建立父親專案。 2、兩個按鈕都要選擇,建立一個簡單的專案結構

linux伺服器 maven lombok專案無法自動打包

由於公司部署專案都升級為自動化部署導致lombokxia專案在linux在通過maven命令無法打包,始終報以下錯誤,通過查詢發現是因為maven 專案打包無法將lombok管理的get、set方法生成出來 百度說明maven-compiler-plugin包需要3.3

maven 父子專案及子專案引用問題

在專案開發會存在這樣的專案組織要求,一個父專案,幾個子專案,子專案有單項引用。這樣的要求反應到Maven中是怎樣的呢? 在maven 裡互相依賴是不允許的,即只允許單項依賴。另外,正在開發中的子專案如何被另一子專案所依賴呢?這些問題可以到pom.xml得到解決。 有幾個很關鍵

intelJ IDEA 建立maven父子專案模組的方法

在 intelJ IDEA 建立maven父子專案模組是經常用到的,但是,對於初學者來說也是比較容易忽略的。可以說很簡約,下面直接上圖。 首先,建立一個父專案。依次file>new>module 在出現的介面中選maven專案,記住不要勾選任何內容。 下一步,

MAVEN專案管理外掛maven-plugins

    Maven是一個專案管理工具,它包含了一個專案物件模型 (Project Object Model),一組標準集合,一個專案生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用

Maven 公共專案更新後打包時引用不到的問題( common專案,Jenkins配置)

最近做的專案用Jenkins做持續整合和持續交付。在Jenkins裡配置好maven命令,自動執行。 前臺的專案結構是這樣的 mall-web-parent         -- innodata-web-common         -- innomall-web-

maven啟動專案那些坑-----打包處理

不能啟動,始終不能開啟專案,徐老師又催的緊............. 急死我了。 後來在 csii - loan - parent 下打包 package一下 有時候一直排錯不行,後來發現原來是jar包沒有打進去,這才是萬年難遇的坑。 沒事咯! 給個讚唄

spark專案藉助maven-shade-plugin外掛打包依賴

maven配置 maven配置 <profiles> <profile> <id>spark-c

使用maven-assembly-plugin外掛打包

在pom.xml中配置 <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupI

使用Mavenassembly外掛實現自定義打包

一、背景   最近我們專案越來越多了,然後我就在想如何才能把基礎服務的打包方式統一起來,並且可以實現按照我們的要求來生成,通過研究,我們通過使用maven的assembly外掛完美的實現了該需求,爽爆了有木有。本文分享該外掛的配置以及微服務的統一打包方式。 二、配置步驟及

Mavenassembly外掛實現自定義打包部署(包含依賴jar包)

微服務必備 優點:   1、可以直接匯入依賴jar包   2、可以新增外掛啟動 .sh 檔案   3、外掛的配置以及微服務的統一打包方式   1.首先我們需要在pom.xml中配置maven的assembly外掛 <build> <plugins

maven-assembly-plugin外掛打包 jar、tar.gz

使用 maven-assembly-plugin 外掛可以將我們的java application(java應用程式)打成可執行jar,下面簡要介紹一下使用maven-assembly-plugin打包可執行jar和tar.gz。 前面我們已經介紹過maven 多環境打包配

maven中使用assembly對java語言專案進行打包

1.在pom.xml檔案出新增如下配置資訊:(build標籤和dependencies標籤處於同一梯度)     <build>         <resources>             <resource>           

使用maven-assembly-plugin打包zipproject

ati XML private odin 能夠 tracking resp clas end 使用Maven對Web項目進行打包。默覺得war包。但有些時候。總是希望打成zip包(亦或其它壓縮包,類似tomcat的那種文件夾結構,直接運行bin/sta

maven-assembly-plugin打包可執行的jar包

main 可執行 assembly ase div streaming jar包 clas lean pom.xml添加 <build> <plugins> <plugin>

idea spring boot 使用maven-plugin外掛打包

首頁需要需改pom.xml檔案的packaging : <modelVersion>4.0.0</modelVersion> <packaging>war</packaging> 新增外部執行的tomcat依賴: <dependenc

Maven專案中不打包 *.hbm.xml 對映檔案

今天做個maven專案,各種百度,終於解決了為什麼hbm.xml找不到,路徑都正確 話不多說。首先可以在pom.xml中配置 <build> <sourceDirectory>src/main/java</sourceDirectory>&nbs