美文网首页Maven
(IV)Maven - clean package instal

(IV)Maven - clean package instal

作者: SonyaBaby | 来源:发表于2018-06-06 10:48 被阅读0次

Hello-Maven Clean and Compile后,我们来执行一下 mvn clean package

 ...
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ hello-maven ---
[INFO] Building jar: C:\Subversion\MavenPrj\helloMaven\target\hello-maven-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.329 s
[INFO] Finished at: 2018-06-06T09:36:22+08:00
[INFO] Final Memory: 17M/166M
[INFO] ------------------------------------------------------------------------

同样在打包前Maven会执行编译测试工作。

jar:jar任务负责打包,即jar插件的jar目标将项目主代码打包成一个名为hello-maven-1.0-SNAPSHOT.jar的文件。这个文件同样也位于target/输出目录,文件名根据artifact-version.jar规则命名

为了使Maven项目可以直接引用这个jar,我们还需要进行安装,即执行mvn clean install

...
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ hello-maven ---
[INFO] Building jar: C:\Subversion\MavenPrj\helloMaven\target\hello-maven-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ hello-maven ---
[INFO] Installing C:\Subversion\MavenPrj\helloMaven\target\hello-maven-1.0-SNAPSHOT.jar to C:\Repository\m2repo\com\play\myMaven\hello-maven\1.0-SNAP
SHOT\hello-maven-1.0-SNAPSHOT.jar
[INFO] Installing C:\Subversion\MavenPrj\helloMaven\pom.xml to C:\Repository\m2repo\com\play\myMaven\hello-maven\1.0-SNAPSHOT\hello-maven-1.0-SNAPSHO
T.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.201 s
[INFO] Finished at: 2018-06-06T09:47:42+08:00
[INFO] Final Memory: 18M/170M
[INFO] ------------------------------------------------------------------------

可以看到在执行install之前,Maven同样帮我们执行了clean resources compile test jar操作,在打包操作之后才执行了安装任务install:install。

install任务将项目输出的jar、和pom安装到了Maven本地仓库


install输出位置.png

补充说明一下maven的三种工程:
1.pom工程:用在父级工程或聚合工程中。用来做jar包的版本控制。
2.war工程:将会打包成war,发布在服务器上的工程。如网站或服务。
3.jar工程:将会打包成jar用作jar包使用。

默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META-INF/MAINFEST.MF文件,将无法看看Main-Class一行)。MANIFEST.MF文件内容如下:

Manifest-Version: 1.0
Built-By: songyanyan
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_74

为了生成可执行的jar文件。需要借助maven-shade-plugin

  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>2.4.3</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>com.play.myMaven.HelloWorld</mainClass>
              </transformer>
            </transformers>
          </configuration>
        </execution>
      </executions>
   </plugin>

我们配置的mainClass为com.play.myMaven.HelloWorld,项目在打包时会将信息放至MANIFEST中,再次执行mvn clean install:

[INFO] Building jar: C:\Subversion\MavenPrj\helloMaven\target\hello-maven-1.0-SNAPSHOT.jar
[INFO] maven-shade-plugin:2.4.3:shade (default) @ hello-maven -
有shade任务完成构建.png

original-hello-maven-1.0-SNAPSHOT.jar是原始jar
hello-maven-1.0-SNAPSHOT.jar是带有Main-Class信息的可运行jar,打开META-INF/MANIFEST.MF可以看到Main-Class信息

Manifest-Version: 1.0
Built-By: songyanyan
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_74
Main-Class: com.play.myMaven.HelloWorld

在项目根目录执行该jar文件 用命令java -jar [执行目标文件],在这里是java -jar target/hello-maven-1.0-SNAPSHOT.jar

C:\Subversion\MavenPrj\helloMaven>java -jar target/hello-maven-1.0-SNAPSHOT.jar
Hello World

控制台输出Hello World!
注:《Maven实战》学习笔记

相关文章

网友评论

    本文标题:(IV)Maven - clean package instal

    本文链接:https://www.haomeiwen.com/subject/nfnvsftx.html