簡體   English   中英

在 Jenkins 構建期間動態添加 Android 項目依賴項

[英]Dynamically add an Android project dependency during Jenkins build

我目前有一個構建我的 Android APK 的 Jenkins 管道。 我正在努力尋找一種在構建過程中動態添加依賴項的好方法。

我不想更改主存儲庫中當前的 build.grade 文件:

dependencies {
    api 'androidx.appcompat:appcompat:1.1.0'
    ...
}

我有一個來自另一個私有存儲庫的依賴項:

api 'com.private.library:some-library:1.0'

是否可以從 Jenkins 管道訪問 build.gradle 文件依賴項並動態添加依賴項? 我可以將當前的 android 項目包裝在另一個包含依賴項的 gradle 文件中嗎? 或者可能是在構建時添加依賴項的另一種好方法?

根據您的管道的定義方式。您可以在克隆存儲庫之后和構建 apk 之前,在管道中添加一個運行 shell 命令的步驟。 例如,如果在 linux 上運行,則使用 sed 添加要添加的行。

stages {
    stage('Clone repo') {...}
    stage('Add dependency') {
        steps {
            sh '''
                sed -i "/api 'androidx.appcompat:appcompat:1.1.0'/a api 'com.private.library:some-library:1.0'" ./path/to/build.gradle
            '''
        }
    }
    stage('Build') {...}
}

這將在 appcompat 依賴項之后的新行上添加私有 repo 依賴項。

編輯:如果你想用這種方法 go ,這個命令可能是一個更好的選擇。

echo "dependencies { api 'com.private.library:some-library:1.0' }" >> path/to/build.gradle 

此命令沒有 sed 文本依賴項(在主倉庫中更改原始 build.gradle 的情況下風險較小)。 它只是在文件末尾添加了另一個包含您的私有 repo 依賴項的依賴項塊。 您可以在同一個文件中定義多個依賴塊,因此如果定義了其他依賴項也沒問題,它不會覆蓋。

通過將這兩個字符串插入到build.gradle's defaultConfig 中解決了問題:

def env = System.getenv()
versionName "1." + env['BUILD_NUMBER']

代替

versionName "1.0"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM