我成功地使用标记将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
答案 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上进行调查。