『壹』 idea maven 打包不包含jar包
目標 1. 將依賴第三方jar包都打進去
2. 將工程java 目錄下所有文件夾和配置文件,包括資源文件都打入jar包,根據目錄來
3. 打出jar文件可直接運行
方法:採用 maven-assembly-plugin
環境:IDEA 14.1.5 JDK 1.8
其中**/*寫法,是為了保證各級子目錄下的資源文件被打包,svn相關文件排除。
pom.xml 寫法
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>**/.svn/*</exclude>
</excludes>
<filtering>false</filtering>
</resource>
</resources></span>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
『貳』 maven打包含有多個main程序的jar包運行方式
如果一個jar中含有多個主程序,而你沒有配置默認主程序,或者想要運行指定主程序,則可以通過如下命令執行:
java -cp example03-1.0-SNAPSHOT.jar com.java.common.HelloAgent
-cp <目錄和 zip/jar 文件的類搜索路徑>
example03-1.0-SNAPSHOT.jar jar包
com.java.common.HelloAgent 指定的主程序類
『叄』 用maven打包war時,怎麼才能不要lib下面的jar
可以在每個dependency上面加<optional>true</optional>。
但是如果你打的war包裡面沒有lib,那你的應用伺服器怎麼運行呢,放在tomcat/lib 下可不是個好方法
『肆』 如何用maven打包可執行的jar
第一步:在你的pom.xml中添加
1<plugin>
2 <artifactId>maven-assembly-plugin</artifactId>
3 <version>2.2</version>
4 <configuration>
5 <archive>
6 <manifest>
7 <mainClass>cn.com.threetcloud.agent.server.BrokerServer</mainClass>
8 </manifest>
9 </archive>
10 <descriptorRefs>
11 <descriptorRef>
12 jar-with-dependencies
13 </descriptorRef>
14 </descriptorRefs>
15 </configuration>
16 </plugin>
第二步:CMD進入到自己的工程文件夾下進行mvn assembly:assembly操作
我的工程是在D:\workspace\test
那麼操作步驟是
1:cmd回車
2:d:回車
3:cd workspace回車
4:cd test回車
5:mvn assembly:assembly回車
第三步:CMD通過java命令運行剛才導出的jar文件,一般導出後在自己工程的target文件夾下面
我的jar導出後在D:\workspace\test\target\agent-server-0.0.1-jar-with-dependencies.jar
那麼操作步驟是
1:cmd回車
2:d:回車
3:cd workspace回車
4:cd test回車
5:cd target回車
5:java -jar agent-server-0.0.1-jar-with-dependencies.jar回車
到此結束。
為什麼我們導出jar文件後不直接雙擊呢?
答:因為雙擊看不到是哪裡出錯了,包括我們控制台輸出的信息也看不到,而通過java命令運行後就可以在黑屏上顯示這些信息。
『伍』 maven-spring-boot 打可執行jar時,怎麼排除provided的jar
spring-boot默認提供內嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以啟動。但是,有時候我們更希望一個tomcat來管理多個項目,這種情況下就需要項目是war格式的包而不是jar格式的包。spring-boot同樣提供了解決方案,只需要簡單的幾步更改就可以了,這里提供maven項目的解決方法:
1.將項目的啟動類Application.java繼承SpringBootServletInitializer並重寫configure方法
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}12345678910111213
2.在pom.xml文件中,project下面增加package標簽
<packaging>war</packaging>1
3.還是在pom.xml文件中,dependencies下面添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>12345
這樣,只需要以上3步就可以打包成war包,並且部署到tomcat中了。需要注意的是這樣部署的request url需要在埠後加上項目的名字才能正常訪問。spring-boot更加強大的一點就是:即便項目是以上配置,依然可以用內嵌的tomcat來調試,啟動命令和以前沒變,還是:mvn spring-boot:run。
如果需要在springboot中加上request前綴,需要在application.properties中添加server.contextPath=/prefix/即可。其中prefix為前綴名。這個前綴會在war包中失效,取而代之的是war包名稱,如果war包名稱和prefix相同的話,那麼調試環境和正式部署環境就是一個request地址了。
『陸』 用maven打包jar項目其中很多模塊引用了相同jar包,如何把它些jar公用,讓maven打包不把這公用包打進去
『柒』 maven打包jar包時如何打包本地jar文件
本地jar添加到maven倉庫的方法。 有些包在mvn repository是沒有的,例如IKAnlyzer.jar,那我們又想讓maven幫助我們管理,怎麼辦呢?
一、安裝maven環境,配置環境變數
二、下載你需要加入到maven的jar包
1、配置maven環境,計算機-屬性-高級系統設置-環境變數,添加系統變數MAVEN_HOME。值指向bin層,復制到變數值裡面。
我下載的是apache-maven-3.3.9
2、下載需要加入到maven的包,我這里的例子是IKAnlyzer,因為他在maven倉庫里沒有。
2.1、先測試maven環境變數是否安裝成功
cmd後輸入 mvn -v
2.2、在cmd中輸入
mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dfile=E:IKAnalyzer3.2.8.jar -Dpackaging=jar
這些參數與pom.xml裡面的參數對應關系。其實4是本地jar的路徑。我把包放在E盤了。 如圖:
groupId:DgroupId
artifactId:jms
version:Dversion
那在pom.xml 加入:
<dependency>
// groupId與version我在本地測試的時候無法使用".",設置成沒有小數點的名稱即可
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
<version>1.1</version>
</dependency>
『捌』 如何執行maven打包的jar包
這個我記得之前遠標教育老師講過,他說
第一步:在你的pom.xml中添加
1<plugin>
2 <artifactId>maven-assembly-plugin</artifactId>
3 <version>2.2</version>
4 <configuration>
5 <archive>
6 <manifest>
7 <mainClass>cn.com.threetcloud.agent.server.BrokerServer</mainClass>
8 </manifest>
9 </archive>
10 <descriptorRefs>
11 <descriptorRef>
12 jar-with-dependencies
13 </descriptorRef>
14 </descriptorRefs>
15 </configuration>
16 </plugin>
第二步:CMD進入到自己的工程文件夾下進行mvn assembly:assembly操作
我的工程是在D:\workspace\test
那麼操作步驟是
1:cmd回車
2:d:回車
3:cd workspace回車
4:cd test回車
5:mvn assembly:assembly回車
第三步:CMD通過java命令運行剛才導出的jar文件,一般導出後在自己工程的target文件夾下面
我的jar導出後在D:\workspace\test\target\agent-server-0.0.1-jar-with-dependencies.jar
那麼操作步驟是
1:cmd回車
2:d:回車
3:cd workspace回車
4:cd test回車
5:cd target回車
5:java -jar agent-server-0.0.1-jar-with-dependencies.jar回車
到此結束。
『玖』 maven 排除依賴jar
理論上 只要配置 exclusions 就可以 排除關聯的依賴了
出現你這種情況, 有一種可能, 即還有其他的jar 依賴了XmlSchema
你需要看下是否還有其他的jar 依賴這個 XmlSchema, 都排除掉
最直接的是, 先看下 eclipse 裡面 這個項目所有依賴的jar ,是否出現了這個 XmlSchema
『拾』 maven怎麼打包成jar並且運行
第一步:在你的pom.xml中添加
1<plugin>
2 <artifactId>maven-assembly-plugin</artifactId>
3 <version>2.2</version>
4 <configuration>
5 <archive>
6 <manifest>
7 <mainClass>cn.com.threetcloud.agent.server.BrokerServer</mainClass>
8 </manifest>
9 </archive>
10 <descriptorRefs>
11 <descriptorRef>
12 jar-with-dependencies
13 </descriptorRef>
14 </descriptorRefs>
15 </configuration>
16 </plugin>
第二步:CMD進入到自己的工程文件夾下進行mvn assembly:assembly操作
我的工程是在D:\workspace\test
那麼操作步驟是
1:cmd回車
2:d:回車
3:cd workspace回車
4:cd test回車
5:mvn assembly:assembly回車
第三步:CMD通過java命令運行剛才導出的jar文件,一般導出後在自己工程的target文件夾下面
我的jar導出後在D:\workspace\test\target\agent-server-0.0.1-jar-with-dependencies.jar
那麼操作步驟是
1:cmd回車
2:d:回車
3:cd workspace回車
4:cd test回車
5:cd target回車
5:java -jar agent-server-0.0.1-jar-with-dependencies.jar回車
到此結束。