maven專案如何打包成jar以便通過java -jar執行
java -jar經常會報兩個錯誤
1. 找不到主類異常
2. 依賴的jar檔案未打入到包中
怎麼解決呢?
1. POM檔案新增maven-compiler-plugin以及maven-assembly-plugin,注意在maven-assembly-plugin中要指定mainClass,這樣可以避免java –jar 時報找不到主類異常。
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.hfi</groupId> <artifactId>itemProcess</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>itemProcess</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <showWarnings>true</showWarnings> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <mainClass>cn.hfi.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build> </project>
2. 在intelliij idea的專案terminal中執行mvn compile assembly:single
會進行打包,並將依賴打入到包中
E:\develop_IJ\itemProcess>mvn compile assembly:single [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building itemProcess 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2 [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ itemProcess --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 3 resources [INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ itemProcess --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-assembly-plugin:3.1.0:single (default-cli) @ itemProcess --- [WARNING] While downloading org.apache.commons:commons-io:1.3.2 This artifact has been relocated to commons-io:commons-io:1.3.2. https://issues.sonatype.org/browse/MVNCENTRAL-244 [INFO] Building jar: E:\develop_IJ\itemProcess\target\itemProcess-jar-with-dependencies.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.924 s [INFO] Finished at: 2018-07-30T11:48:16+08:00 [INFO] Final Memory: 35M/516M [INFO] ------------------------------------------------------------------------
3. windows下開啟cmd,cd到jar位置
執行java -jar itemProcess-jar-with-dependencies.jar
4. 可能存在以下這個需求:一個maven專案中有多個帶main函式的子專案,那麼如何指定生成的某個jar檔案呢?
比如下面這個配置檔案
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>make-network-logs-job</id> <configuration> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> <archive> <manifest> <mainClass>com.packtpub.esh.nwlogs.Driver</mainClass> </manifest> </archive> <finalName>${project.artifactId}-${project.version}-nwlogs</finalName> </configuration> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> <execution> <id>make-tweets2es-job</id> <configuration> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> <archive> <manifest> <mainClass>com.packtpub.esh.tweets2es.Driver</mainClass> </manifest> </archive> <finalName>${project.artifactId}-${project.version}-tweets2es</finalName> </configuration> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> <execution> <id>make-tweets2hdfs-job</id> <configuration> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> <archive> <manifest> <mainClass>com.packtpub.esh.tweets2hdfs.Driver</mainClass> </manifest> </archive> <finalName>${project.artifactId}-${project.version}-tweets2hdfs</finalName> </configuration> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> <execution> <id>make-historywords-job</id> <configuration> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> <archive> <manifest> <mainClass>com.packtpub.esh.historywords2hdfs.EsToHDFS</mainClass> </manifest> </archive> <finalName>history2hdfs</finalName> </configuration> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
可以指定mvn compile assembly:[email protected]來執行具體某個execution id的任務
另一種可選的解決方法是使用profile,在這裡有種大材小用的感覺
相關推薦
maven專案如何打包成jar以便通過java -jar執行
java -jar經常會報兩個錯誤 1. 找不到主類異常 2. 依賴的jar檔案未打入到包中 怎麼解決呢? 1. POM檔案新增maven-compiler-plugin以及maven-assembly-plugin,注意在maven-assembly-plugin中
MAVEN專案打包成jar,供普通Java專案呼叫
1、定義生成格式 把pom.xml中<packaging>設定為jar <name>scenario</name> <!-- 宣告更友好的專案名稱(非必須) --> 2、將MAVEN依賴也打進jar包中 在工
將Maven專案打包成可執行jar檔案和外種配置方式(引用第三方jar)
http://blog.csdn.net/zhangdaiscott/article/details/6911640 方法一. mvn assembly 或 mvn package (一個jar包) 把依賴包和自己專案的檔案打包如同一個jar包(這種方式對sp
eclipse maven專案打包成jar包
這裡介紹常見的兩種打jar包的方法 1.在pom.xml配置檔案中新增如下資訊,可生成普通的jar包: <packaging>jar</packaging>或者不加,也會預設打成jar包 然後通過maven快捷命令 maven-install打包(
將Maven專案打包成可執行jar檔案(引用第三方jar)
http://blog.csdn.net/zhangdaiscott/article/details/6911640 方法一. mvn assembly 或 mvn package (一個jar包) 把依賴包和自己專案的檔案打包如同一個jar包(這種方式對spring的專案
maven專案 打包成jar包無法打入本地jar包的解決辦法
專案中想要使用本地的jar包的時候,我們在編譯器中可以匯入,並且在打包成war包的時候也能打入進去,但是將專案打包成jar包的時候 卻無法打入。因為jar包中 jar的檔案打包在了BOOT-INF中。如下圖 這裡可以看到,maven中的jar包全部在這裡,
Maven專案打包成可執行的jar
方法一:將專案及所依賴的所有jar包打包成一個jar。 1、pom.xml“project\build\plugins”的子節點下新增assembly外掛: <build> <plugins> <plugin> &l
如何將maven專案打包成可執行的jar
方法一:將專案及所依賴的所有jar包打包成一個jar。 1、pom.xml新增assembly外掛 2、執行mvn assembly:assembly 3、生成如下檔案 4、執行java -jar quickstart-1.0.0-jar-with-depende
hadoop-maven專案打包成可執行的jar
環境: cdh5.1.0 jdk1.7 <build> <plugins> <!--指定JDK為1.7 --> <plugin> <groupId>org.apache.maven.plug
怎麼將maven專案打包成war包
問題:我在eclipse上能執行,然後我想將這個maven專案打包成war然後放到另外一臺機子上(其實是手動放在tomcat的webapp目錄中),提供外部訪問。現在問題是,一直maven專案打包一直出錯。請問大俠怎麼將maven打包好?萬分感謝回答1:右鍵專案,選擇Run As,再選擇Maven build
【Maven】Maven 專案打包成 war 包部署到 Tomcat
【Maven】Maven 專案打包成 war 包部署到 Tomcat 實踐環境 作業系統: Windows IDE: Eclipse 打包部署過程 1 專案打包 1.1 右鍵點選所需要打包的專案,點選如圖所示&
idea將maven專案打包成war包並部署
1.將web專案通過maven打包成war包(pom檔案中的打包方式為war) 2.將war包複製到tomcat的webapps目錄下 3.修改server.xml,在Host配置段中新增如下內容 <Host name="localhost" appBase="webapps
使用docker將maven專案打包成映象
最近工作中需要使用docker打包成映象啟動,所以有了這篇文章。 差點忘了,你的maven專案中首先要有配置docker打包 以下是maven專案的配置 1.pom檔案中加入plugin <plugin>
maven專案打包的時候忽略第三方依賴jar包
因為專案需要經常性的修改-打包-上傳到伺服器,包含lib的war包比較大,第三方jar包基本不會大動,所以就想把這些jar包移出war包,放在jetty裡面,這樣每次只需要編譯打包原始碼即可,war包大小極度減小,方便上傳。 maven配置 <plug
將maven專案打包成war包,部署到tomcat伺服器
1.右鍵要打包的專案,選擇Run As -> Maven install :2.出現以下情況,則說明打包成功。3.重新整理工程,在target中發現打包好的war包,並且複製war包,放入tomcat的webapps中,因為war包的名字過長,放入webapp時可以修改
idea上把maven專案打包成war包直接部署在tomcat上
idea剛上手不久,搗騰了幾個小專案練手,發現idea非常人性化,它可以直接把按鍵設定成eclipse一樣的,這個IDE確實比eclipse更順手點,比如響應比較快。下面我直接把war包雲新在tomc
eclipse 把maven專案打包成maven依賴包
如果第一次需要設定 專案:右擊---》run as maven clean ----->run as maven build 設定goals 為dependency:copy-depen
用eclipse把maven專案打包成war併發布到jboss伺服器上的步驟
第一步:開啟eclipse,對maven專案右擊,點擊出現的Debug As---->Debug configurations,點選Debug configurations,找到Maven Bu
spring boot專案打包成war 並在tomcat上執行的步驟詳解
把spring-boot專案按照平常的web專案一樣釋出到tomcat容器下 一、修改打包形式 在pom.xml裡設定 <packaging>war</packaging> 二、移除嵌入式tomcat外掛 在pom.xml裡找到spri
spring boot專案打包成war並在tomcat上執行的步驟
原文地址:http://m.blog.csdn.net/article/details?id=52515226 把spring-boot專案按照平常的web專案一樣釋出到tomcat容器下 一、修改打包形式 在pom.xml裡設定 <packaging>