mavne 构建jar

spring-boot 构建的应用用传统的方式打包会报

   java.lang.NoClassDefFoundError: org/springframework/boot/CommandLineRunner

错误,应该加入spring-boot-maven-plugin .

如下:

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-jar-plugin</artifactId>

                <configuration>

                    <archive>

                        <manifest>

                            <mainClass>com.ams.Application</mainClass>

                            <addClasspath>true</addClasspath>

                            <classpathPrefix>lib/</classpathPrefix>

                        </manifest>

                    </archive>

                    <classesDirectory>

                    </classesDirectory>

                </configuration>

            </plugin>

        </plugins>

    </build>

在pom里面添加后 直接 mvn clean package 就搞定.

 

java -jar u.jar

 

 

如果不是spring-boot 这个也可以用

一、依赖项的处理

 

java application运行时需要查找依赖的第三方jar,如果查找classpath失败,就会报错,可以先用

 

mvn dependency:copy-dependencies -DoutputDirectory=target/lib

 

命令,把依赖的jar包全部导出到target/lib这个目录下

 

 

 

二、利用maven-jar-plugin修改META-INF\MANIFEST.MF 清单文件

 

java application的最终jar里,用解压工具打开后,可以看到META-INF目录下,有一个重要的清单文件 MANIFEST.MF,这里面可以指定 Main-Class及classpath,结构如下:

 

复制代码

1 Manifest-Version: 1.0

2 Built-By: jimmy

3 Build-Jdk: 1.7.0_09

4 Class-Path: lib/DataEntity-1.0.jar ...

5 Created-By: Apache Maven 3.2.3

6 Main-Class: ctas.importer.reader.app.Program

7 Archiver-Version: Plexus Archiver

复制代码

其中第4行指定了classpath,也就是所依赖的jar包在什么地方,第6行表示main函数的入口类,默认情况下mvn clean package生成的jar包里,清单文件上并没有这2行,需要在pom.xml中添加插件

 

按 Ctrl+C 复制代码

 

按 Ctrl+C 复制代码

第7行指定Main-Class,第9行指定classpath的相对路径,这样mvn package后,清单文件里就会自动添加Main-Class和Class-Path这二项

 

ok了,部署时把jar包和lib目录,都上传到服务器上 ,然后测试一下,顺利的话 java -jar  xxx.jar就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值