本文介绍如何配置 Maven 项目并将其打包发布到私有 Maven 仓库(如 Nexus),包含自动发布和手动发布两种方式。
1. 配置私服认证信息
首先,需要在 Maven 的 settings.xml 文件中配置私服的用户名和密码。该文件通常位于 ~/.m2/ 目录下。
xml
<servers>
<!-- 配置发布到 Release 仓库的认证信息 -->
<server>
<username>deployment</username>
<password>deploy123</password>
<id>nexus-release</id> <!-- 对应 pom.xml 中 release 仓库的 ID -->
</server>
<!-- 配置发布到 Snapshot 仓库的认证信息 -->
<server>
<username>deployment</username>
<password>deploy123</password>
<id>nexus-snapshots</id> <!-- 对应 pom.xml 中 snapshot 仓库的 ID -->
</server>
</servers>
说明:
<id>标签的值(如nexus-release和nexus-snapshots)必须与后续在项目pom.xml中配置的仓库 ID 保持一致。username和password是你在私服(如 Nexus)中为部署用户设置的凭据。
2. 配置项目 pom.xml
接下来,在项目的 pom.xml 文件中配置分发管理(distributionManagement)和源码打包插件。如果是多模块项目,可以直接在父级 pom.xml 中配置,子项目会自动继承这些设置。
xml
<distributionManagement>
<!-- Release 仓库配置 -->
<repository>
<id>nexus-release</id> <!-- 必须与 settings.xml 中的 server ID 对应 -->
<url>http://192.168.0.247/nexus/content/repositories/releases/</url>
</repository>
<!-- Snapshot 仓库配置 -->
<snapshotRepository>
<id>nexus-snapshots</id> <!-- 必须与 settings.xml 中的 server ID 对应 -->
<url>http://192.168.0.247/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<!-- 用于生成项目源码包的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<configuration>
<attach>true</attach> <!-- 确保源码包被附加到构建中 -->
</configuration>
<executions>
<execution>
<id>attach-sources</id>
<!-- 在 package 阶段执行,生成源码 JAR 包 -->
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
说明:
distributionManagement:定义了项目发布到远程仓库的配置。repository:用于发布正式版本(Release)的仓库。snapshotRepository:用于发布快照版本(Snapshot)的仓库。
- Maven 会根据项目
pom.xml中<version>的后缀(如0.0.1-SNAPSHOT)自动判断发布到快照仓库还是正式仓库。 maven-source-plugin:用于在打包时生成项目源码 JAR 包,方便后续查看和调试。
3. 执行打包发布命令
配置完成后,可以通过 Maven 命令来打包并发布项目:
-
打包项目:
bashmvn clean package该命令会清理项目并编译、打包,在
target目录下生成 JAR/WAR 文件。 -
发布到私服:
bashmvn deploy该命令会将项目(包括主 JAR 包和源码 JAR 包)发布到
pom.xml中配置的私服仓库。Maven 会根据版本号自动选择发布到 release 仓库或 snapshot 仓库。 -
跳过测试并发布: 如果想在发布时跳过单元测试,可以使用以下命令:
bashmvn deploy -Dmaven.test.skip=true注意:
mvn install会将项目安装到本地 Maven 仓库(~/.m2/repository)。mvn deploy则会将项目发布到远程私服仓库。
4. 手动打包发布(针对非Maven项目或特定JAR包)
对于非 Maven 项目生成的 JAR 包,或者需要手动上传第三方 JAR 包到私服时,可以使用 deploy:deploy-file 命令。
在 JAR 包所在的目录或任意位置执行以下命令:
bash
mvn deploy:deploy-file \
-DgroupId=[0] \
-DartifactId=[1] \
-Dversion=[2] \
-Dpackaging=jar \
-Dfile=[3] \
-Durl=[4] \
-DrepositoryId=[5] \
-DpomFile=[6]
参数说明:
[0]:groupId,项目的组织 ID。[1]:artifactId,项目的构件 ID。[2]:version,项目的版本号。[3]:file,要上传的 JAR 包的物理路径或文件名。[4]:url,私服仓库的 URL 地址。[5]:repositoryId,私服仓库的 ID,必须与settings.xml中配置的serverID 对应。[6]:pomFile(可选),若该 JAR 包有对应的 POM 文件,可指定其路径。
示例:
bash
mvn deploy:deploy-file -DgroupId=com.alipay.sdk -DartifactId=alipay-sdk-java -Dversion=4.1.17.ALL -Dpackaging=jar -Dfile=alipay-sdk-java-4.17.9.ALL.jar -Durl=http://172.16.1.22:8081/nexus/content/repositories/snapshots -DrepositoryId=Snapshots -DpomFile=alipay-sdk-java-4.17.9.ALL.pom

评论 0
可以先写评论,登录后草稿会自动恢复。