国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Maven 生成打包可執行jar包的方法步驟

Maven 生成打包可執行jar包的方法步驟

2020-09-05 00:03荒野雄兵 Java教程

這篇文章主要介紹了Maven 生成打包可執行jar包的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

最近IDEA打可執行Jar包搞了三天,一直失敗,好好學習一下Maven-assembly,在此記錄一下

1. 需求

項目打包,滿足以下要求:

1.整個項目打一個Zip包下面包括應用程序、應用程序依賴的jar包、說明文檔
2.項目打的jar包可以執行不同類里的Main函數
3.項目源碼打的jar包要與依賴的第三方jar包分開
4.項目里的執行腳本也要一塊打包并進行分類
5.document目錄下的readme.txt放在壓縮包的根目錄下,其他的還放在這個目錄下
6.打的jar包去掉不需要的目錄(文件)

2. 開發環境

IDEA-2016 Maven3.3.9

項目的目錄結構:

Maven 生成打包可執行jar包的方法步驟

3. Maven打包插件介紹

assembly翻譯過來就是組裝、裝配的意思
Maven對項目打包常用的打包插件有三種,分別是:

 

插件 功能
maven-jar-plugin maven 默認打包插件,用來創建 project jar
maven-shade-plugin 打可執行包,executable(fat) jar
maven-assembly-plugin 支持自定義打包方式

 

這里使用maven-jar-plugin和maven-assembly-plugin
項目目錄:

每次找jar包之前先clean一下,不然的話IDEA會認為你的項目沒有修改而不重新加載

另:配置文件的注釋已經很詳細了,這里就不另外再說明了

4. Maven使用maven-jar-plugin打可執行jar包

主要配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.4</version>
  <!-- 對要打的jar包進行配置 -->
  <configuration>
    <!-- Configuration of the archiver -->
    <archive>
      <!--生成的jar中,不要包含pom.xml和pom.properties這兩個文件-->
      <addMavenDescriptor>false</addMavenDescriptor>
 
      <!-- Manifest specific configuration -->
      <manifest>
        <!--是否要把第三方jar放到manifest的classpath中-->
        <addClasspath>true</addClasspath>
        
        <!--生成的manifest中classpath的前綴,
        因為要把第三方jar放到lib目錄下,
        所以classpath的前綴是lib/-->
        <classpathPrefix>lib/</classpathPrefix>
      </manifest>
    </archive>
    <!--過濾掉不希望包含在jar中的文件-->
    <excludes>
      <!-- 排除不需要的文件夾(路徑是jar包內部的路徑) -->
      <exclude>**/assembly/</exclude>
    </excludes>
  </configuration>
</plugin>

完整配置見底部

5. Maven使用maven-assembly-plugin裝需要打包的文件打進zip包

pom.xml下的主要配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.4</version>
  <!-- 對項目的組裝進行配置 -->
  <configuration>
    <!-- 指定assembly插件的配置文件所在位置 -->
    <descriptors>
      <descriptor>src/main/resources/assembly/package.xml</descriptor>
    </descriptors>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id>
      <!-- 將組裝綁定到maven生命周期的哪一階段 -->
      <phase>package</phase>
      <goals>
        <!-- 指定assembly插件的打包方式-->
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

assembly插件的配置文件package.xml見底部

6. Maven生成可執行jar包及zip項目壓縮包

雙擊執行mvn:package會生成兩個包:可執行jar包和項目壓縮包,因為assembly的裝配配置的是綁定到這上面來的
雙擊執行assembly:single只生成項目壓縮包

Maven 生成打包可執行jar包的方法步驟

這里執行mvn:package

Maven 生成打包可執行jar包的方法步驟

解壓后的項目壓縮包目錄結構:

Maven 生成打包可執行jar包的方法步驟

7. 執行jar包

解壓縮生成的項目包
TestString的源碼:

?
1
2
3
4
5
6
public class TestString {
  public static void main(String[] args) {
    String[] arr = new String[]{"aaa", "bbb", "ccc", "DDD", "EEE", "FFF"};
    System.out.println(StringUtils.join(arr, "---"));
  }
}

TestNumber的源碼:

?
1
2
3
4
5
6
public class TestNumber {
  public static void main(String[] args) {
    Integer[] arr = new Integer[]{11, 22, 33, 44, 55, 66};
    System.out.println(StringUtils.join(arr, "---"));
  }
}

命令行運行生成的jar

?
1
2
java -classpath dong.jar com.dong.bigdata.TestString
java -classpath dong.jar com.dong.bigdata.TestNumber

運行結果:

Maven 生成打包可執行jar包的方法步驟

8. pom.xml配置

包含兩個文件:
pom.xml整體的配置
package.xml包含在pom.xml中,用于指定assembly裝配時的配置

pom.xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?xml version="1.0" encoding="UTF-8"?>
<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:項目或者組織的唯一標志,并且配置時生成路徑也是由此生成,如org.myproject.mojo生成的相對路徑為:/org/myproject/mojo-->
  <groupId>com.dong</groupId>
  <!--項目的通用名稱-->
  <artifactId>bigdata</artifactId>
  <!--打包機制,如pom,jar,maven-plugin,ejb,war,ear,rar,par-->
  <packaging>jar</packaging>
  <!--項目的版本-->
  <version>1.0-SNAPSHOT</version>
 
  <!-- ####################### 項目信息 ###################### -->
  <!--用戶描述項目的名稱,無關緊要的東西-->
  <name>bigdata</name>
  <!--寫明開發團隊的網站,無關緊要-->
  <url>http://http://www.dong.com/.com</url>
 
  <!-- ####################### 環境設置 ###################### -->
  <properties>
    <!-- 項目執行腳本目錄 -->
    <project.script.execute.directory>src/main/scripts/execute</project.script.execute.directory>
    <!-- 項目說明文檔目錄 -->
    <project.document.directory>document</project.document.directory>
    <!-- 項目配置文件目錄 -->
    <project.config.directory>src/main/resources</project.config.directory>
    <!-- 項目編碼 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
    <!-- 本地編譯JDK版本 -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <!-- 項目部署JDK版本 -->
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
 
  <!--
   配置Maven的倉庫, 在此處配置的倉庫會優先于setting.xml里配置的倉庫,
   建議哪個倉庫快,哪個配置在前面, 然后如果Maven在前面配置的倉庫找不到的話會去后面的倉庫找,
   如果后面的倉庫都找不到,會去setting.xml中央倉庫里找
   -->
  <repositories>
    <!-- 阿里云倉庫,配置Maven倉庫,速度快配置在最前面 -->
    <repository>
      <id>aliyun</id>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </repository>
    <!-- 國內備選倉庫 -->
    <repository>
      <id>repo2</id>
      <url>http://repo2.maven.org/maven2/</url>
    </repository>
 
    <!-- Cloudera倉庫,如果在阿里云倉庫里找不到去Cloudera的倉庫里找,主要是CDH版本Hadoop依賴的jar -->
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
 
    <!-- Scala倉庫,如果前面兩個都找不到來倉庫找,如果此倉庫也找不到,去中央倉庫找 -->
    <repository>
      <id>scala-tools.org</id>
      <name>Scala-Tools Maven2 Repository</name>
      <url>http://scala-tools.org/repo-releases</url>
    </repository>
  </repositories>
 
  <dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
    </dependency>
  </dependencies>
 
  <build>
    <finalName>dong</finalName>
    <plugins>
      <!-- The configuration of maven-jar-plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <!-- 對要打的jar包進行配置 -->
        <configuration>
          <!-- Configuration of the archiver -->
          <archive>
            <!--生成的jar中,不要包含pom.xml和pom.properties這兩個文件-->
            <addMavenDescriptor>false</addMavenDescriptor>
 
            <!-- Manifest specific configuration -->
            <manifest>
              <!--是否要把第三方jar放到manifest的classpath中-->
              <addClasspath>true</addClasspath>
 
              <!--
              生成的manifest中classpath的前綴,
              因為要把第三方jar放到lib目錄下,
              所以classpath的前綴是lib/
              -->
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
          </archive>
          <!--過濾掉不希望包含在jar中的文件-->
          <excludes>
            <!-- 排除不需要的文件夾(路徑是jar包內部的路徑) -->
            <exclude>**/assembly/</exclude>
          </excludes>
        </configuration>
      </plugin>
 
      <!-- The configuration of maven-assembly-plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <!-- 對項目的組裝進行配置 -->
        <configuration>
          <!-- 指定assembly插件的配置文件所在位置 -->
          <descriptors>
            <descriptor>src/main/resources/assembly/package.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <!-- 將組裝綁定到maven生命周期的哪一階段 -->
            <!--<phase>package</phase>-->
            <goals>
              <!-- 指定assembly插件的打包方式-->
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

9. package.xml文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
  <id>full</id>
  <!-- 最終打包成一個用于發布的zip文件 -->
  <formats>
    <format>zip</format>
  </formats>
 
  <!-- 把依賴jar包打包進Zip壓縮文件的lib目錄下 -->
  <dependencySets>
    <dependencySet>
      <!--不使用項目的artifact,第三方jar不要解壓,打包進zip文件的lib目錄-->
      <useProjectArtifact>false</useProjectArtifact>
 
      <!-- 第三方jar打包進Zip文件的lib目錄下, -->
      <!-- 注意此目錄要與maven-jar-plugin中classpathPrefix指定的目錄相同, -->
      <!-- 不然這些依賴的jar包加載到ClassPath的時候會找不到-->
      <outputDirectory>lib</outputDirectory>
 
      <!-- 第三方jar不要解壓-->
      <!--<unpack>false</unpack>-->
    </dependencySet>
  </dependencySets>
 
  <!-- 文件設置,你想把哪些文件包含進去,或者把某些文件排除掉,都是在這里配置-->
  <fileSets>
    <!-- 把項目自己編譯出來的可執行jar,打包進zip文件的根目錄 -->
    <fileSet>
      <directory>${project.build.directory}</directory>
      <outputDirectory></outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
 
    <!--
    把項目readme說明文檔,打包進zip文件根目錄下
    (這里針對目錄document/readme.txt文件)
    ${projet.document.directory}是pom.xml中自己配置的
     -->
    <fileSet>
      <directoryl>${projet.document.directory}</directoryl>
      <outputDirectory></outputDirectory>
      <includes>
        <include>readme.*</include>
      </includes>
    </fileSet>
 
    <!--
    把項目相關的說明文檔(除了readme文檔),
    打包進zip文件根目錄下的document目錄
    (這里針對document/exclode.txt文件)
    ${project.document.directory}是在pom.xml中自己配置的
    -->
    <fileSet>
      <directory>${project.document.directory}</directory>
      <outputDirectory>document</outputDirectory>
      <excludes>
        <exclude>readme.*</exclude>
      </excludes>
    </fileSet>
 
    <!--
    把項目的腳本文件目錄(src/main/scripts )中的啟動腳本文件,
    打包進zip文件的根目錄
    (這里針對的是src/scripts/execute/include-file.sh文件)
    ${project.script.execute.directory}
    -->
    <fileSet>
      <directory>${project.script.execute.directory}</directory>
      <outputDirectory></outputDirectory>
      <includes>
        <include>*</include>
      </includes>
    </fileSet>
 
  </fileSets>
</assembly>

到此這篇關于Maven 生成打包可執行jar包的方法步驟的文章就介紹到這了,更多相關Maven 生成可執行jar 內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/daerzei/article/details/82883472

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级淫片丝袜脚交 | 亚洲国产精品一区二区第一页 | 成人午夜 | 精品视频一区在线观看 | 午夜影院久久 | a级三四级黄大片 | 999精品在线 | 国产精品五区 | 天天久久| 亚洲男人天堂2023 | 91精品国产91久久久久久最新 | 亚洲三级在线免费观看 | av片免费看 | 欧美一区二区三区在线观看 | 龙珠z国语291集普通话 | 日本在线观看一区 | 精品在线91 | 亚洲精品乱码久久久久久蜜桃91 | 国产原创精品视频 | 国产美女自拍视频 | 精品久久久久一区二区国产 | 在线观看国产一区二区 | 欧美第5页| 婷婷精品久久久久久久久久不卡 | 国产成人福利 | 色综合色综合网色综合 | 天天干狠狠操 | 欧美一级网站 | 国产一区二区高清在线 | 黄色一级在线观看 | 日韩欧美一区二区精品 | 五月天婷婷色综合 | 午夜男人 | 美女爽到呻吟久久久久 | 中文字幕视频在线观看 | 亚洲精品电影网在线观看 | 香蕉久久久 | 国产色网 | 亚洲特黄一级 | www.av在线 | 日韩中文字幕一区 |