企业级——Sonatype Oss(02)私服使用

169 阅读4分钟

使用maven创建项目,配置私服、发布等,并发布到sonatype oss nexus仓库。

系统要求

Maven 3.9+ requires JDK 8 or above to execute.

下载maven

maven 3.9.8 下载tar.gz:
apache-maven-3.9.8-bin.tar.gz

下载链接:
maven.apache.org/download.cg…

安装

  1. 解压apache-maven-3.9.8-bin.tar.gz到指定目录**/usr/local/maven**
# -z 表示gzip压缩的tar包。
# -x 表示解压。
# -v 表示显示过程中的信息。
# -f 表示后面跟压缩文件名。
# apache-maven-3.9.8-bin.tar.gz 是压缩文件的名字。
# -C /usr/local/maven 表示将解压到指定的目录。 注意目录需要存在
# --strip-components 1 表示脱去一层目录。
tar -xzvf apache-maven-3.9.8-bin.tar.gz -C /usr/local/maven --strip-components 1
  1. 配置环境变量

笔记是macos操作系统shell类型是zsh, 如果是linux bash,需要配置vi ~/.bashrc, 如果是window则在环境变量添加

vi ~/.zshrc

追加

export M2_HOME=/usr/local/maven
export PATH=$PATH:$M2_HOME/bin
  1. 修改conf/settings.xml文件
# 1. 修改仓库存储位置, 默认是${user.home}/.m2/repository, 笔记习惯性修改到扩展硬盘上
...
  <localRepository>/path/to/local/repo</localRepository>
...

# 2. 在<servers></servers>节点中增加账号

....

注意 以下配置的id, 在项目中会使用
<servers>
    ...
    <server>
      <id>local-releases</id>
      <username>deploy</username>
      <password>123456</password>
    </server>
    <server> 
      <id>local-snapshots</id>
      <username>deploy</username>
      <password>123456</password>
    </server>
    <server>
      <id>local-repo</id>
      <username>deploy</username>
      <password>123456</password>
    </server>
    ...
</servers>
...

注意:local-releases,local-snapshots,local-repo这3个id需要记住,在项目中需要使用。

source ~/.zshrc 激活

  1. 查看maven版本
mvn -version

Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256)
Maven home: /Volumes/data/software/maven
Java version: 17.0.11, vendor: Oracle Corporation, runtime: /Volumes/data/software/java/graalvm-jdk-17.0.11+7.1/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "12.5", arch: "x86_64", family: "mac"

创建项目

  • groupId: com.clibing
  • artifactId: demo
  1. 创建项目
mvn archetype:generate -DgroupId=com.clibing -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cd demo
mvn install
  1. 配置私服

编辑 pom.xml

cd demo
vi pom.xml
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.clibing</groupId>
  <artifactId>demo</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>demo</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <distributionManagement> 
      <repository>
          <id>local-releases</id>
          <url>http://localhost:8081/repository/release/</url>
      </repository>
      <snapshotRepository>
          <id>local-snapshots</id>
          <url>http://localhost:8081/repository/snapshots/</url>
      </snapshotRepository>
  </distributionManagement>

  <repositories>
        <repository>
            <id>local-repo</id>
            <url>http://localhost:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

</project>

发布

mvn clean install -Dmaven.test.skip=true deploy

输出日志

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------------< com.clibing:demo >--------------------------
[INFO] Building demo 1.0-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- clean:3.2.0:clean (default-clean) @ demo ---
[INFO] Deleting /Volumes/data/workspace/temp/demo/target
[INFO] 
[INFO] --- resources:3.3.1:resources (default-resources) @ demo ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Volumes/data/workspace/temp/demo/src/main/resources
[INFO] 
[INFO] --- compiler:3.13.0:compile (default-compile) @ demo ---
[INFO] Recompiling the module because of changed source code.
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file with javac [debug target 1.8] to target/classes
[WARNING] 未与 -source 8 一起设置引导类路径
[INFO] 
[INFO] --- resources:3.3.1:testResources (default-testResources) @ demo ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ demo ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- surefire:3.2.5:test (default-test) @ demo ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- jar:3.4.1:jar (default-jar) @ demo ---
[INFO] Building jar: /Volumes/data/workspace/temp/demo/target/demo-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- install:3.1.2:install (default-install) @ demo ---
[INFO] Installing /Volumes/data/workspace/temp/demo/pom.xml to /Volumes/data/storage/m2_repository/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-SNAPSHOT.pom
[INFO] Installing /Volumes/data/workspace/temp/demo/target/demo-1.0-SNAPSHOT.jar to /Volumes/data/storage/m2_repository/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- resources:3.3.1:resources (default-resources) @ demo ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Volumes/data/workspace/temp/demo/src/main/resources
[INFO] 
[INFO] --- compiler:3.13.0:compile (default-compile) @ demo ---
[INFO] Nothing to compile - all classes are up to date.
[WARNING] Overwriting artifact's file from /Volumes/data/workspace/temp/demo/target/demo-1.0-SNAPSHOT.jar to /Volumes/data/workspace/temp/demo/target/classes
[INFO] 
[INFO] --- resources:3.3.1:testResources (default-testResources) @ demo ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ demo ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- surefire:3.2.5:test (default-test) @ demo ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- jar:3.4.1:jar (default-jar) @ demo ---
[INFO] 
[INFO] --- install:3.1.2:install (default-install) @ demo ---
[INFO] Installing /Volumes/data/workspace/temp/demo/pom.xml to /Volumes/data/storage/m2_repository/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-SNAPSHOT.pom
[INFO] Installing /Volumes/data/workspace/temp/demo/target/demo-1.0-SNAPSHOT.jar to /Volumes/data/storage/m2_repository/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- deploy:3.1.2:deploy (default-deploy) @ demo ---
Downloading from local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/maven-metadata.xml
Uploading to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-20240712.070318-1.pom
Uploaded to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-20240712.070318-1.pom (1.3 kB at 905 B/s)
Uploading to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-20240712.070318-1.jar
Uploaded to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/demo-1.0-20240712.070318-1.jar (2.2 kB at 2.5 kB/s)
Downloading from local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/maven-metadata.xml
Uploading to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/maven-metadata.xml
Uploaded to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/1.0-SNAPSHOT/maven-metadata.xml (759 B at 1.7 kB/s)
Uploading to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/maven-metadata.xml
Uploaded to local-snapshots: http://localhost:8081/repository/snapshots/com/clibing/demo/maven-metadata.xml (273 B at 610 B/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.106 s
[INFO] Finished at: 2024-07-12T15:03:27+08:00
[INFO] ------------------------------------------------------------------------

私服预览

deploy后的,私服的列表

清理本机快照数据

自己用golang写了一个清理本地过时的maven snapshots jar包,只保留最后一个, 支持预览、确认删除

传送门:
github.com/clibing/kni…

# 查看将要删除的jar列表
knife system maven /Volumes/data/storage/m2_repository 

# 确认删除
knife system maven -c /Volumes/data/storage/m2_repository