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

时间:2014-09-18 15:04:29

标签: maven deployment github travis-ci

我成功地使用标记将maven项目中的JAR部署到Github。但是,当前配置假定JAR的文件名始终保持不变,而不是。当我执行新版本时,这将相应地更改,因此部署将失败。

有没有办法在YAML文件中使用通配符?从我在Stackoverflow和Web上找到的内容来看,YAML不支持通配符。在没有操纵.travis.yml文件本身的情况下,我无法找到另一个黑客攻击,我想避免这样做。

版本字符串位于pom.xml

当前.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会更改自己的配置文件,我不确定这是否会起作用,b)是个好主意。

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

3 个答案:

答案 0 :(得分:9)

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

完成
<build>
    <finalName>helloci</finalName>
</build>

但是,如果您没有在travis-ci上构建,那么您可能希望按照maven惯例保留名称。您可以通过在pom中添加以下内容来实现此目的:

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

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

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

答案 1 :(得分:2)

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

before_deploy:
  - "mvn -DskipTests package"
  - export FOO=$(ls target/foo-version-*.jar)

deploy:
  provider: releases
  api_key:
    secure: yep
  file: "${FOO}"

答案 2 :(得分:1)

很抱歉,通配符模式暂时不起作用,但我们将在Travis CI上进行调查。