我有一個使用JenkinsFile管道腳本在Jenkins中構建的Spring Boot項目。Maven無法讀取Jenkins環境變量
這個Spring項目使用Spring Boot父級文件。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
</parent>
我將所有依賴關係(包括上面的父項)託管在自定義存儲庫中(恰好通過Nexus代理)。該庫中的定義如下所示
<repositories>
<repository>
<id>nexus</id>
<url>${env.REPO_URL}</url>
</repository>
</repositories>
在我的本地開發機器,我有REPO_URL
環境變量設置爲我的倉庫的URL。在本地,當我mvn install
這工作得很好。 Maven將存儲庫URL解析爲我在我的環境中定義的內容,並且不會遇到任何問題。
當我嘗試使用JenkinsFile管道腳本來定義REPO_URL
的環境變量時,出現了我的問題。在詹金斯的腳本定義,它看起來像:
stringParam(name: 'REPO_URL', value: 'www.my.repo')
我在JenkinsFile建立簡單地:
sh "mvn clean package"
Maven將生成以下錯誤:
[FATAL] Non-resolvable parent POM for org.my.project:my-project:1.0.0: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE from/to nexus (${env.REPO_URL}): Cannot access ${env.REPO_URL} with type default using the available connector factories: BasicRepositoryConnectorFactory and 'parent.relativePath' points at wrong local POM @ line 12, column 10
從錯誤消息的外觀,似乎Maven無法訪問該環境變量。但是,在我的JenkinsFile中,如果我執行echo
那麼變量將會填充正確的值。很顯然,這個變量正在填充,但由於某些原因,Maven並沒有正確解析它。
在使用Jenkins向Maven提供環境變量時,是否有任何不正確的操作?