700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > IntelliJ IDEA-打包war包或jar包(包含Maven方式)

IntelliJ IDEA-打包war包或jar包(包含Maven方式)

时间:2024-04-05 07:52:03

相关推荐

IntelliJ IDEA-打包war包或jar包(包含Maven方式)

打工具包jar(普通项目)

什么是工具包呢? 就是其他项目需要依赖我们的某些类或者方法,那么我们就需要将当前的项目打成工具包放入到目标项目里

然后apply->ok 之后我们就可以开始编译jar包了

在你创建jar包时候,下图这个目录下找

这种打包方式是工具包,可以放入在其他项目里使用

打运行包jar方式一(普通项目)

我们需要运行我们写的功能,并且不依赖于IDEA这些工具,而且在任意有JDK环境的电脑上进行使用

之后就在当前项目下out文件内将所有依赖文件和当前项目文件都打包在一起了

可以先进入这个文件下的命令行

然后我们运行我们项目的jar 其他jar都是这个项目的依赖jar不用管

使用命令: java -jar utils.jar

接下来就可以把生成的这个文件夹拷贝到远程linux上就行了.

以后每次打包的时候,只要没有新的依赖jar,那么只需要将Linux上当前项目的jar替换掉就行了,不然每次上传全部的话太费时间了.

注意:

这种打包方案每次更新代码不用从新配置打包配置 直接build 就行了 然后在黑窗口内直接从新启动就行了resources下面的META-INF不要删除,这个文件是记录当前项目的全部依赖 删除了会导致打包后项目找不到依赖启动失败

打运行包jar方式二(普通项目)

这种方式打包后的依赖会,都放入到主jar包内的根目录里,也就是说所有的内容都会打包进一个jar里

然后我们运行jar包

打包war(手工)

如果把include in project build 给勾选上那么每次更新代码打包都是最新的

然后apply->ok 之后我们就可以开始编译war包了

在你创建jar包时候,下图这个目录下找

使用IDEA-Maven插件打包war

使用IDEA-Maven插件打包jar

打包前需要进行clean,不然一些新加的文件等不会生效

然后他就会在target下面生成了jar或者war

普通项目打包jar

非Springboot 项目是不会自动配置主类的那么需要我们手动指定主类才能打包

<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><appendAssemblyId>false</appendAssemblyId><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><!-- 此处指定main方法入口的class --><mainClass>com.csdn.PomDemo</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>assembly</goal></goals></execution></executions></plugin></plugins><!-- 指定jar包名称--><finalName>pom-demo</finalName></build>

Springboot打包jar

项目pom.xml内必须有 (自动查找主类)

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

使用Maven自带的打包工具(注意前提的你Maven插件(Plugins能使用 )

还需要检测你的IDEA-Maven的配置

打包后一般在项目的target下面

Springboot父子工程打包jar

介绍和注意事项

简称:多工程或者多模块打包

但是注意的是: 有主入口的模块是主模块最后会生成jar包,没有主入口的模块是依赖模块需要将包打入主模块里

什么是主入口模块?

模块的主入口文件内容最少如下:

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

没有主入口文件的打包方式比如: pojo , dao , service , utils 这些单独抽取出来生的一个模块在pom里添加下面的代码

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.4</version></plugin></plugins></build>

有主入口文件的 比如 web eureka feign … 这些 在pom里添加下面的代码

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

打包顺序

先将父工程打包到本地仓库里,然后在将所有依赖模块打包到本地私有仓库里

比如pojo dao service utils这些模块里面没有主入口(Main)的工程,打包到本地仓库

然后 web , eureka , feign 这些有主入口(Main)的工程才能打包成功

注意:如果子模块或依赖模块更新,那么相关依赖的主模块也需要重新打包

具体打包流程图:

赖冲突问题

如果子工厂依赖了b,而父工程也依赖了b那么就会产生依赖冲突问题A引用了B, B引用了C, 而C引用了A 这样就会造成死循环,就会产生依赖冲突问题

具体如何解决参考我博客IDEA-Maven依赖冲突解决大全

问题

启动jar乱码问题

在windwos系统中cmd里我当时启动一个jar ,然后打印的中文都正常,最后执行的结果,和在IDEA中执行的结果不一致,也没有报错,然后我就纳闷了,代码一模一样怎么会不一样呢? ,然后我就在关键的地方输出信息到窗口中,我发现我在代码中读取外部的一个文件导致的,而文件内容都是乱码, 然后我检查cmd的编码格式才发现,默认的是gbk编码(系统默认), 而那个文件内容是utf-8格式的,所以读取的内容会乱码,导致内部程序解析不了这些内容自动跳过了,然后知道原因了就好处理了在jar启动的时候加上-Dfile.encoding=utf-8就行了

java -Dfile.encoding=utf-8 -jar pom-demo.jar

父子模块打包问题

Failed to execute goal on project …: Could not resolve dependencies for project …

首先,相信既然你犯了这样的错误,那么你的项目应该也是多个module的,

我这里就举个例子,主模块web和功能模块service这两个模块。

在模块中web依赖于service模块,在service中执行完clean和install之后,本地仓库也存在依赖,但是在web中进行install就会出现上面的报错,

解决办法: 最后发现原来是自己没有首先对父项目也就是根模块进行clean和install , 导致web依赖根模块的东西找不到,因为父子传递的因素导致的

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复如有侵权,请私信联系我感谢,配合,希望我的努力对你有帮助^_^

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。