使用Travis CI将Maven版本部署到Github



我成功地使用标签将一个JAR从一个maven项目部署到Github。然而,当前的配置假设JAR的文件名始终保持不变,但事实并非如此。当我发布新版本时,这将相应地发生变化,因此部署将失败。

有没有一种方法可以在YAML文件中使用通配符?根据我在Stackoverflow和web上的发现,YAML中不支持通配符。如果不操作.travis.yml文件本身,我就找不到其他破解方法,我想避免这种情况。

版本字符串在pom.xml中可用。

Current.travis.yml:

language: java
jdk:
- openjdk7
deploy:
  provider: releases
  api_key:
    secure: asfdsdflkjsdflkj...
  file: target/helloci-1.0-SNAPSHOT.jar
  on:
    repo: ktk/helloci
    all_branches: true
    tags: true

我当然可以以某种方式编写脚本,但Travis CI会更改自己的配置文件,我不确定这a)是否有效,b)是否是个好主意。

我正在玩的Repo:https://github.com/ktk/helloci

解决方法是让maven使用固定名称生成文件,这可以通过来完成

<build>
    <finalName>helloci</finalName>
</build>

然而,如果你不是在travis-ci上构建,你可能想按照maven惯例保留这个名字。你可以通过在你的pom中添加以下内容来实现这一点:

<properties>
    <finalName>${project.artifactId}-${project.version}</finalName>
</properties>
<build>
    <finalName>${finalName}</finalName>

在执行maven时,通过在.travis.yml文件中添加以下2行来传递-DfinalName=helloci

before_install: mvn install -DskipTests=true -DfinalName=helloci
install: mvn test

您可能还想将标记名添加到生成的文件的名称中。这可以通过以下方式实现:

before_install: mvn install -DskipTests=true -DfinalName=helloci-$TRAVIS_TAG
deploy:
  file: target/helloci-$TRAVIS_TAG.jar

现在支持通配符,我运行这个设置:

before_deploy:
  - "mvn -DskipTests package"
  - export FOO=$(ls target/foo-version-*.jar)
deploy:
  provider: releases
  api_key:
    secure: yep
  file: "${FOO}"

抱歉,通配符模式目前不起作用,但我们将研究如何在Travis CI上实现这一点。

最新更新