从maven部署到nexus时指定版本

时间:2018-11-19 12:43:57

标签: maven apache-kafka nexus apache-kafka-connect confluent

我已经分叉了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>
...

因此,我首先在pom.xml中添加了<version>标签,但它开始将其用作所有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

但这抱怨父母:

  

[错误]无法在kafka-connect-hdfs项目上执行目标org.codehaus.mojo:versions-maven-plugin:2.7:set(default-cli):项目版本是从父级继承的。 -> [帮助1]

我什至不在乎代码中的版本是否为5.0.0,我只是想在我们的工件中部署到其他版本。

我不是行家专家,所以也许我缺少一些非常基本的线索,但是欢迎大家提供帮助。

2 个答案:

答案 0 :(得分:1)

所以有一些很好的建议,但是最后对我来说最适合我的一件事是对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中已经存在的参数(artifactIdgroupId等),但是它可以工作,这才是:-)< / p>

答案 1 :(得分:0)

您可以使用${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文件。

相关问题