`
luyuwww
  • 浏览: 95164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics