首页 > 编程 > Java > 正文

使用maven生成可执行的jar包的方法

2019-11-26 09:53:26
字体:
来源:转载
供稿:网友

本文介绍了使用maven生成可执行的jar包的方法,分享给大家,具体如下:

从pom的xsi中可以打开描述pom的schema:

可以看到pom中,project的结构:

默认的mvn install生成的jar是不带主类入口的,需要在maven-compile-plugin中设置主类,

<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>com.cetc.di</groupId> <artifactId>hellocetc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>hellocetc</name> <url>http://maven.apache.org</url> <properties>  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies>  <dependency>   <groupId>junit</groupId>   <artifactId>junit</artifactId>   <version>3.8.1</version>   <scope>test</scope>  </dependency> </dependencies>  <build><pluginManagement><plugins><plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-jar-plugin</artifactId>  <configuration>    <source>1.8</source>    <target>1.8</target>    <archive>      <manifest>        <mainClass>com.cetc.di.hellocetc.App</mainClass>        <addClasspath>true</addClasspath>      <classpathPrefix>lib/</classpathPrefix>      </manifest>    </archive>    <classesDirectory>    </classesDirectory>  </configuration></plugin></plugins>  </pluginManagement></build> </project>

执行mvn install:

在target目录中,发现jar包已经生成:

用java decompiler,可以看到manifest中已经加入了MainClass:

使用mvn help:effective-pom可以看到pom.xml的完整结构(包括继承而来的属性):

[INFO] Scanning for projects...[INFO]                                     [INFO] ------------------------------------------------------------------------[INFO] Building hellocetc 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- maven-help-plugin:2.2:effective-pom (default-cli) @ hellocetc ---[INFO] Effective POMs, after inheritance, interpolation, and profiles are applied:<!-- ====================================================================== --><!--                                    --><!-- Generated by Maven Help Plugin on 2015-11-18T08:05:12         --><!-- See: http://maven.apache.org/plugins/maven-help-plugin/        --><!--                                    --><!-- ====================================================================== --><!-- ====================================================================== --><!--                                    --><!-- Effective POM for project 'com.cetc.di:hellocetc:jar:0.0.1-SNAPSHOT'  --><!--                                    --><!-- ====================================================================== --><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>com.cetc.di</groupId> <artifactId>hellocetc</artifactId> <version>0.0.1-SNAPSHOT</version> <name>hellocetc</name> <url>http://maven.apache.org</url> <properties>  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies>  <dependency>   <groupId>junit</groupId>   <artifactId>junit</artifactId>   <version>3.8.1</version>   <scope>test</scope>  </dependency> </dependencies> <repositories>  <repository>   <snapshots>    <enabled>false</enabled>   </snapshots>   <id>central</id>   <name>Central Repository</name>   <url>https://repo.maven.apache.org/maven2</url>  </repository> </repositories> <pluginRepositories>  <pluginRepository>   <releases>    <updatePolicy>never</updatePolicy>   </releases>   <snapshots>    <enabled>false</enabled>   </snapshots>   <id>central</id>   <name>Central Repository</name>   <url>https://repo.maven.apache.org/maven2</url>  </pluginRepository> </pluginRepositories> <build>  <sourceDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/src/main/java</sourceDirectory>  <scriptSourceDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/src/main/scripts</scriptSourceDirectory>  <testSourceDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/src/test/java</testSourceDirectory>  <outputDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target/classes</outputDirectory>  <testOutputDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target/test-classes</testOutputDirectory>  <resources>   <resource>    <directory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/src/main/resources</directory>   </resource>  </resources>  <testResources>   <testResource>    <directory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/src/test/resources</directory>   </testResource>  </testResources>  <directory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target</directory>  <finalName>hellocetc-0.0.1-SNAPSHOT</finalName>  <pluginManagement>   <plugins>    <plugin>     <artifactId>maven-antrun-plugin</artifactId>     <version>1.3</version>    </plugin>    <plugin>     <artifactId>maven-assembly-plugin</artifactId>     <version>2.2-beta-5</version>    </plugin>    <plugin>     <artifactId>maven-dependency-plugin</artifactId>     <version>2.8</version>    </plugin>    <plugin>     <artifactId>maven-release-plugin</artifactId>     <version>2.3.2</version>    </plugin>    <plugin>     <artifactId>maven-jar-plugin</artifactId>     <version>2.4</version>     <configuration>      <source>1.8</source>      <target>1.8</target>      <archive>       <manifest>        <mainClass>com.cetc.di.hellocetc.App</mainClass>        <addClasspath>true</addClasspath>        <classpathPrefix>lib/</classpathPrefix>       </manifest>      </archive>      <classesDirectory />     </configuration>    </plugin>   </plugins>  </pluginManagement>  <plugins>   <plugin>    <artifactId>maven-clean-plugin</artifactId>    <version>2.5</version>    <executions>     <execution>      <id>default-clean</id>      <phase>clean</phase>      <goals>       <goal>clean</goal>      </goals>     </execution>    </executions>   </plugin>   <plugin>    <artifactId>maven-resources-plugin</artifactId>    <version>2.6</version>    <executions>     <execution>      <id>default-testResources</id>      <phase>process-test-resources</phase>      <goals>       <goal>testResources</goal>      </goals>     </execution>     <execution>      <id>default-resources</id>      <phase>process-resources</phase>      <goals>       <goal>resources</goal>      </goals>     </execution>    </executions>   </plugin>   <plugin>    <artifactId>maven-jar-plugin</artifactId>    <version>2.4</version>    <executions>     <execution>      <id>default-jar</id>      <phase>package</phase>      <goals>       <goal>jar</goal>      </goals>      <configuration>       <source>1.8</source>       <target>1.8</target>       <archive>        <manifest>         <mainClass>com.cetc.di.hellocetc.App</mainClass>         <addClasspath>true</addClasspath>         <classpathPrefix>lib/</classpathPrefix>        </manifest>       </archive>       <classesDirectory />      </configuration>     </execution>    </executions>    <configuration>     <source>1.8</source>     <target>1.8</target>     <archive>      <manifest>       <mainClass>com.cetc.di.hellocetc.App</mainClass>       <addClasspath>true</addClasspath>       <classpathPrefix>lib/</classpathPrefix>      </manifest>     </archive>     <classesDirectory />    </configuration>   </plugin>   <plugin>    <artifactId>maven-compiler-plugin</artifactId>    <version>3.1</version>    <executions>     <execution>      <id>default-compile</id>      <phase>compile</phase>      <goals>       <goal>compile</goal>      </goals>     </execution>     <execution>      <id>default-testCompile</id>      <phase>test-compile</phase>      <goals>       <goal>testCompile</goal>      </goals>     </execution>    </executions>   </plugin>   <plugin>    <artifactId>maven-surefire-plugin</artifactId>    <version>2.12.4</version>    <executions>     <execution>      <id>default-test</id>      <phase>test</phase>      <goals>       <goal>test</goal>      </goals>     </execution>    </executions>   </plugin>   <plugin>    <artifactId>maven-install-plugin</artifactId>    <version>2.4</version>    <executions>     <execution>      <id>default-install</id>      <phase>install</phase>      <goals>       <goal>install</goal>      </goals>     </execution>    </executions>   </plugin>   <plugin>    <artifactId>maven-deploy-plugin</artifactId>    <version>2.7</version>    <executions>     <execution>      <id>default-deploy</id>      <phase>deploy</phase>      <goals>       <goal>deploy</goal>      </goals>     </execution>    </executions>   </plugin>   <plugin>    <artifactId>maven-site-plugin</artifactId>    <version>3.3</version>    <executions>     <execution>      <id>default-site</id>      <phase>site</phase>      <goals>       <goal>site</goal>      </goals>      <configuration>       <outputDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target/site</outputDirectory>       <reportPlugins>        <reportPlugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-project-info-reports-plugin</artifactId>        </reportPlugin>       </reportPlugins>      </configuration>     </execution>     <execution>      <id>default-deploy</id>      <phase>site-deploy</phase>      <goals>       <goal>deploy</goal>      </goals>      <configuration>       <outputDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target/site</outputDirectory>       <reportPlugins>        <reportPlugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-project-info-reports-plugin</artifactId>        </reportPlugin>       </reportPlugins>      </configuration>     </execution>    </executions>    <configuration>     <outputDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target/site</outputDirectory>     <reportPlugins>      <reportPlugin>       <groupId>org.apache.maven.plugins</groupId>       <artifactId>maven-project-info-reports-plugin</artifactId>      </reportPlugin>     </reportPlugins>    </configuration>   </plugin>  </plugins> </build> <reporting>  <outputDirectory>D:/Users/a/Workspaces/MyEclipse 2015/hellocetc/target/site</outputDirectory> </reporting></project>[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.526 s[INFO] Finished at: 2015-11-18T20:05:12+08:00[INFO] Final Memory: 10M/245M[INFO] ------------------------------------------------------------------------

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表