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

Adr*_*end 5 deployment github maven 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
Run Code Online (Sandbox Code Playgroud)

我肯定能以某种方式编写脚本但是Travis CI会更改自己的配置文件,我不确定这是否会起作用,b)是个好主意.

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

Ret*_*mür 9

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

<build>
    <finalName>helloci</finalName>
</build>
Run Code Online (Sandbox Code Playgroud)

但是,如果您不是在travis-ci上构建,则可能希望按照maven约定保留名称.您可以通过在pom中添加以下内容来实现此目的:

<properties>
    <finalName>${project.artifactId}-${project.version}</finalName>
</properties>
<build>
    <finalName>${finalName}</finalName>
Run Code Online (Sandbox Code Playgroud)

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

before_install: mvn install -DskipTests=true -DfinalName=helloci
install: mvn test
Run Code Online (Sandbox Code Playgroud)

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

before_install: mvn install -DskipTests=true -DfinalName=helloci-$TRAVIS_TAG
deploy:
  file: target/helloci-$TRAVIS_TAG.jar
Run Code Online (Sandbox Code Playgroud)


hen*_*nnr 2

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

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

deploy:
  provider: releases
  api_key:
    secure: yep
  file: "${FOO}"
Run Code Online (Sandbox Code Playgroud)