从 maven 部署到 nexus 时指定版本
Specify version when deploying to nexus from maven
我已经 fork Confluent's Kafka Connect HDFS writer,现在我想将这个 jar 的一个版本部署到我的本地 Nexus。
mvn clean deploy
非常有效并部署了 jar。
https://[nexus]/repository/releases/io/confluent/kafka-connect-hdfs/5.0.0/kafka-connect-hdfs-5.0.0.jar
到目前为止一切顺利,但为了区分融合版本和我自己的部署,我想将构建版本更改为 5.0.0-1
左右(最好是标签名称时已推送,但这是第 2 步)
pom.xml版本与5.0.0-post版本基本相同,但这里是最重要的部分:
<parent>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-storage-common-parent</artifactId>
<version>5.0.0</version>
</parent>
<artifactId>kafka-connect-hdfs</artifactId>
<packaging>jar</packaging>
<name>kafka-connect-hdfs</name>
<organization>
<name>Confluent, Inc.</name>
<url>http://confluent.io</url>
</organization>
<url>http://confluent.io</url>
<description>
A Kafka Connect HDFS connector for copying data between Kafka and Hadoop HDFS.
</description>
...
<dependencies>
...
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-storage-common</artifactId>
<version>${confluent.version}</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-storage-core</artifactId>
<version>${confluent.version}</version>
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.confluent</groupId>
<version>0.10.0</version>
<artifactId>kafka-connect-maven-plugin</artifactId>
...
所以首先我将 <version>
标签添加到 pom.xml,但它开始使用它作为所有 confluent.version
的默认值并抱怨它找不到例如:https://[nexus]/repository/releases/io/confluent/kafka-connect-storage-hive/5.0.0-1/kafka-connect-storage-hive-5.0.0-1.pom
接下来我尝试了 versions plugin from maven
mvn versions:set -DnewVersion=5.0.0-1 clean deploy
但是抱怨 parent:
[ERROR] Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.7:set (default-cli) on project kafka-connect-hdfs: Project version is inherited from parent. -> [Help 1]
我什至不关心代码中的版本是否为 5.0.0,我只是想部署到我们的工件中的不同版本。
我不是 maven 专家,所以我可能遗漏了一些非常基本的线索,但欢迎大家提供帮助。
您可以使用${revision}
参数指定版本。
为此,您需要在 pom.xml 中使用此变量添加 <version>
标签:
<artifactId>kafka-connect-hdfs</artifactId>
<version>5.0.0-${revision}</version>
<packaging>jar</packaging>
然后提供给maven命令。例如。,
mvn clean package -Drevision=01
将生成 kafka-connect-hdfs-5.0.0-01.jar
个文件。
所以有一些很好的建议,但最后在我们的设置中对我来说最有效的一件事是使用 Maven 的 deploy:deploy-file
命令。
mvn deploy:deploy-file \
-Dfile=target/kafka-connect-hdfs-5.0.0.jar \
-DrepositoryId=[nexus id] \
-Durl=[nexus url] \
-Dversion=$TAG \
-DgroupId=io.confluent \
-DartifactId=kafka-connect-hdfs
主要缺点是我必须重新指定 pom.xml(artifactId
、groupId
等)中已经存在的参数,但它有效,这才是最重要的:-)
我已经 fork Confluent's Kafka Connect HDFS writer,现在我想将这个 jar 的一个版本部署到我的本地 Nexus。
mvn clean deploy
非常有效并部署了 jar。
https://[nexus]/repository/releases/io/confluent/kafka-connect-hdfs/5.0.0/kafka-connect-hdfs-5.0.0.jar
到目前为止一切顺利,但为了区分融合版本和我自己的部署,我想将构建版本更改为 5.0.0-1
左右(最好是标签名称时已推送,但这是第 2 步)
pom.xml版本与5.0.0-post版本基本相同,但这里是最重要的部分:
<parent>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-storage-common-parent</artifactId>
<version>5.0.0</version>
</parent>
<artifactId>kafka-connect-hdfs</artifactId>
<packaging>jar</packaging>
<name>kafka-connect-hdfs</name>
<organization>
<name>Confluent, Inc.</name>
<url>http://confluent.io</url>
</organization>
<url>http://confluent.io</url>
<description>
A Kafka Connect HDFS connector for copying data between Kafka and Hadoop HDFS.
</description>
...
<dependencies>
...
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-storage-common</artifactId>
<version>${confluent.version}</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-storage-core</artifactId>
<version>${confluent.version}</version>
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.confluent</groupId>
<version>0.10.0</version>
<artifactId>kafka-connect-maven-plugin</artifactId>
...
所以首先我将 <version>
标签添加到 pom.xml,但它开始使用它作为所有 confluent.version
的默认值并抱怨它找不到例如:https://[nexus]/repository/releases/io/confluent/kafka-connect-storage-hive/5.0.0-1/kafka-connect-storage-hive-5.0.0-1.pom
接下来我尝试了 versions plugin from maven
mvn versions:set -DnewVersion=5.0.0-1 clean deploy
但是抱怨 parent:
[ERROR] Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.7:set (default-cli) on project kafka-connect-hdfs: Project version is inherited from parent. -> [Help 1]
我什至不关心代码中的版本是否为 5.0.0,我只是想部署到我们的工件中的不同版本。
我不是 maven 专家,所以我可能遗漏了一些非常基本的线索,但欢迎大家提供帮助。
您可以使用${revision}
参数指定版本。
为此,您需要在 pom.xml 中使用此变量添加 <version>
标签:
<artifactId>kafka-connect-hdfs</artifactId>
<version>5.0.0-${revision}</version>
<packaging>jar</packaging>
然后提供给maven命令。例如。,
mvn clean package -Drevision=01
将生成 kafka-connect-hdfs-5.0.0-01.jar
个文件。
所以有一些很好的建议,但最后在我们的设置中对我来说最有效的一件事是使用 Maven 的 deploy:deploy-file
命令。
mvn deploy:deploy-file \
-Dfile=target/kafka-connect-hdfs-5.0.0.jar \
-DrepositoryId=[nexus id] \
-Durl=[nexus url] \
-Dversion=$TAG \
-DgroupId=io.confluent \
-DartifactId=kafka-connect-hdfs
主要缺点是我必须重新指定 pom.xml(artifactId
、groupId
等)中已经存在的参数,但它有效,这才是最重要的:-)