我正在尝试让Maven打包一个简单的RESTful项目,该项目使用GitLab CI中的.properties文件中的变量。问题是我无法让Maven正确打包.properties文件。
这是我的.gitlab-ci.yml文件:
stages:
- build
- package
- deploy
variables:
PROPERTIES_VALUE: $PROPERTIES_VALUE
services:
- docker:dind
maven-build:
image: maven:3-jdk-8
stage: build
script:
# Getting a value from $PROPERTIES_VALUE doesn't work either
- printf 'greeting = $PROPERTIES_VALUE \ntest = "f"' > Foo/src/main/resources/application.properties
- cat Foo/src/main/resources/application.properties
- "mvn package -B -f Foo/pom.xml"
artifacts:
paths:
- Foo/target/*.jar
上面我尝试创建并填充application.properties,文件被创建但maven忽略它。我尝试从“秘密变量”中获取PROPERTIES_VALUE,但它不起作用。
我还将文件夹添加到我的pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
Maven仍然忽略我的属性文件。在我自己的机器上的IDE中,一切正常,但我无法在GitLab Runner上完成它。
这是使用application.properties文件的java类:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.File;
import java.util.Properties;
@Controller
public class Greeting {
@RequestMapping("/greeting")
public @ResponseBody String greeting(){
Properties prop = new Properties();
InputStream input = null;
String greeting;
try {
input = new FileInputStream("src/main/resources/application.properties");
// load a properties file
prop.load(input);
// get the property value and print it out
greeting = prop.getProperty("greeting");
} catch (IOException ex) {
ex.printStackTrace();
greeting = "failed";
}
return greeting;
}
}
正如您所看到的,每次我尝试Maven打包的jar文件时,它每次都会返回“失败”,并说这样的文件不存在。
我还应该补充一点,我忽略了我的GitLab仓库中的某些文件,所以我所推送的只有2个类,pom.xml文件和一个空资源文件夹。
希望有人可以帮助我。
谢谢。