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

x33g5p2x  于2021-10-17 转载在 Java  
字(1.8k)|赞(0)|评价(0)|浏览(408)

打包jar

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

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

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

打包war

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

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

使用IDEA-Maven插件打包

然后他就会在target下面生成了

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下面

第二种方案

在有些情况下Maven的 Plugins无法使用那么我们可以使用IDEA自带的打包工具

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

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

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

使用命令: java -jar utils.jar

接下来就可以把生成的这个文件夹拷贝到远程linux上就行了.
以后每次打包的时候,只要没有新的依赖jar,那么只需要将Linux上当前项目的jar替换掉就行了,不然每次上传全部的话太费时间了.

注意:

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

Springboot父子工程打包

介绍和注意事项

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

什么是主入口模块?
模块的主入口文件内容最少如下:

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

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

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

有主入口文件的 比如 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 这些模块里面没有主入口的工程,部署到本地仓库

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

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

具体打包流程图:

赖冲突问题

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

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

相关文章