ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot进行maven打包不能启动

2019-06-28 13:29:04  阅读:312  来源: 互联网

标签:springboot spring boot springframework jar maven org 打包


这是官网给出的例子:

先上pom文件:

<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.bai</groupId>
	<artifactId>springboot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot</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>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot</artifactId>
			<version>2.1.3.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-autoconfigure -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-autoconfigure</artifactId>
			<version>2.1.3.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<version>2.1.3.RELEASE</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId> org.springframework.boot </groupId>
				<artifactId> spring-boot-maven-plugin </artifactId>
			</plugin>
		</plugins>
	</build>

</project>

再上java类

@RestController
@EnableAutoConfiguration
public class Example {

	@RequestMapping("/")
	String home() {
		return "Hello World!";
	}

	public static void main(String[] args) {
		SpringApplication.run(Example.class, args);
	}

}

在没有打包之前,执行main方法是可以启动boot的。

但是打包成jar后,java -jar 命令的结果是没有主项目清单。

没有主项目清单的原因是MANIFEST.MF文件里没有配置启动类。
我打开了里面的MANIFEST.MF,确实没有配置启动类,这让我感到很疑惑。

这时候我又注意了一个问题,我的jar包只有3K左右。这么小的jar包能做什么?我查看了里面的具体文件,发现只有Example 这个类。那么即使里面配置了启动类,也肯定会报错无法启动,因为其他的依赖都没有加进去。

那么肯定是打包出现了问题。

打包是spring和maven的共同合作。我推测maven这块应该不会有什么,应该是spring的问题,我认为是这块出了问题:

<plugin>
             <groupId> org.springframework.boot </groupId>
             <artifactId> spring-boot-maven-plugin </artifactId>
</plugin>

查阅了官方文档,发现果然这里是有些问题的:

所述spring-boot-starter-parentPOM包括<executions>配置以结合repackage目标。如果您不使用父POM,则需要自己声明此配置。有关详细信息,请参阅插件文档

它说这段简单的配置是在继承 spring-boot-starter-parent时使用的,因为spring-boot-starter-parent里面已经配置了<executions>等目标,如果没有使用父POM,则需要自己去配置。

我的pom文件,并没有继承 spring-boot-starter-parent,而是主动去配置boot,所以我应该添加一些元素,如下:

<build>
		<plugins>
			<plugin>
				<groupId> org.springframework.boot </groupId>
				<artifactId> spring-boot-maven-plugin </artifactId>
				<version> 2.1.3.RELEASE </version>
				<configuration>
					<mainClass>com.bai.springboot.web.Example</mainClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

再次clean package,这次jar包18M左右,java -jar命令就出现了熟悉的springboot界面。

标签:springboot,spring,boot,springframework,jar,maven,org,打包
来源: https://blog.csdn.net/dmw412724/article/details/88799848

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有