maven经验

本文详细介绍Maven项目打包流程,包括如何跳过测试、指定Java版本、使用spring-boot-maven-plugin、配置私服上传及依赖管理策略。涵盖关键配置如pom.xml设置、插件使用与目标库对接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打包 mvn clean install -Dmaven.test.skip=true 进入到项目与src的同级目录

-Dmaven.test.skip=true 跳过测试目录 否则的 会把测试的类也打进去并且 执行

也可以

<properties>
    <java.version>1.8</java.version>
    <skipTests>true</skipTests>
</properties>

就不用写上面那句了

package 打包 但是并不会上传到本地仓库 install 会 deploy 不仅上传到本地 而且上传到私服

pom文件打包的是否 项目名称记得 

<build>
    <finalName>${project.name}</finalName>
    <plugins>

添加这个 否则他会带版本号

idea创建项目的时候 

spring-boot-maven-plugin 这个是可以默认把所有依赖的包打进去 否则只会是一个很小的项目

虽然maven会自动编译但是他默认编译的jdk版本低 所以我们需要指定

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

而这个插件

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <encoding>utf-8</encoding>
        <useDefaultDelimiters>true</useDefaultDelimiters>
    </configuration>
</plugin>

是为了在spring 配置文件 ${id} 如果不加上面这个 占位符得用@{id} so

另外idea pom文件 上传到私服需要

<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>nexus-releases</name>

<distributionManagement>

<url>http://172.20.5.1:8081/repository/hndt-maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>nexus-snapshots</name>
<url>http://172.20.5.1:8081/repository/hndt-maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

并且还得再maven配置文件加上<server></server>用户名密码

这个里面两个id和那settinbg.xml需要一一对应 是s包传到对应的库里 release传到对应的库里

另外s包的更新策略是daliy是每天更新一次 我们若想直接更新私服的包 可以把本地的删除也可以

miror会覆盖profile配置

当然也可以针对某个项目配个这

 

Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。

基于上述配置,对一个生成Jar软件包的项目执行如下命令 还有非常重要的额作用 找到执行的主类 mainClass否则会报错 找不到main class

mvn package spring-boot:repackage  

 

<version>0.0.1-SNAPSHOT</version> 这个0.0.1 是 redeploy 打包上传到私服的时候 他会生成版本号 例如20200211xxxxx 上传一次一个版本号 所以我们download私服的时候就不需要维护jar包 但是在我们正在用jar到服务器上的时候 而不是引用的时候只要加上
<build>
    <finalName>${project.name}</finalName> 那么那就是不到版本号的名字
这个provide 就是说 谁应用 当前这个工程 那么 会在运行阶段舍弃 这个包 编辑测试可以用  相当于抛弃
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.2.1.RELEASE</version>
            <scope>provided</scope>
        </dependency>
这个和上个差不多 都是排除依赖 在引用这个时候 如果 不显示 加上下面这段代码(可以少加个版本号)是不会引用到的
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.10</version>
        </dependency>
父pom只要加入了  <dependencyManagement>那就证明他只能管个版本号 如果想公用jar包 那得把他去掉
 <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
 </dependencyManagement>

 

 

 

想要把那个本地jar打包到私服上

 

pom.xml

<distributionManagement>
    <repository>
        <id>maven-releases</id>
        <name>nhr</name>
        <url>http://172.16.21.83:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <name>nhs</name>
        <url>http://172.16.21.83:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

 

<server>
      <id>maven-releases</id>
      <username>admin</username>
      <password>gaimima</password>
    </server>
     <server>
      <id>maven-snapshots</id>
      <username>admin</username>
      <password>gaimima</password>
    </server>
  </servers>

他会根据你的s还是relase(真正要上线了)传到私服上

 

 

mvn deploy:deploy-file -DgroupId=com.xuxueli -DartifactId=xxl-job-core -Dversion=2.3.0-SNAPSHOT -Dpackaging=j
ar -Dfile=D:\maven-repository\com\xuxueli\xxl-job-core\2.3.0-SNAPSHOT\xxl-job-core-2.3.0-SNAPSHOT.jar -Durl=http://172.16.21.83:8081/repository/maven-snapshots/  --setti
ngs D:\devSoft\apache-maven-3.6.1-bin\apache-maven-3.6.1\conf\settings.xml -DrepositoryId=maven-snapshots
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值