我成功地使用标签将一个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上实现这一点。