在Jenkins上运行时看不到所有gradle任务

goqiplq2  于 5个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(88)

我正在使用Gradle作为构建系统进行xtext项目。我想在Jenkins中运行gradlew war,但由于某种原因,它不可用。当我运行gradlew tasks以查看所有可用选项时,它不在那里列出。这些是可用的任务:

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Help tasks
----------
buildEnvironment - ...
...

字符串
但是当我在我的机器上本地运行它时,有更多的任务可用:

Build tasks
-----------
...
war - Generates a war archive with all the compiled classes, the web-app content and the libraries.

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the main source code.

Help tasks
----------
...

IDE tasks
---------
...

Run tasks
---------
jettyRun - Starts an example Jetty server with your language

Verification tasks
------------------
check - Runs all checks.
test - Runs the unit tests.


所以war任务很明显在那里,我可以毫无问题地运行它。为什么Jenkins没有看到它。我没有修改任何Gradle文件。所有文件都包含项目创建的默认代码。如果需要,我可以附加任何Gradle文件,但我不知道可能需要哪一个。然而,这是主build.gradle文件(子目录中有更多:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.xtext:xtext-gradle-plugin:2.0.4'
    }
}

subprojects {
    ext.xtextVersion = '2.17.0'
    repositories {
        jcenter()
    }

    apply plugin: 'java'
    dependencies {
        compile platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}")
    }

    apply plugin: 'org.xtext.xtend'
    apply from: "${rootDir}/gradle/source-layout.gradle"
    apply plugin: 'eclipse'

    group = 'ic.ac.uk.mydsl'
    version = '1.0.0-SNAPSHOT'

    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'

    configurations.all {
        exclude group: 'asm'
    }
}


编辑:git repo中我的父目录的图像:

bq9c1y66

bq9c1y661#

您确定从Jenkins上的同一目录和本地运行./gradlew tasks吗?如果您从根项目目录运行Gradle命令,则会显示根项目的任务,但不会显示子项目的任何任务。您的根项目似乎没有应用任何插件,因此,在根项目中不会有任何像war这样的特定于插件的任务。

57hvy0tb

57hvy0tb2#

又迟到了,但在我的情况下找到了这个问题的答案。
问题和解决方案:
settings.gradle包含要构建的模块的名称。在我的设置中,模块是用小写写的,而目录实际上是 Camel 大小写。解决方案当然是纠正目录名称或settings.gradle中的条目,以便大小写匹配。
详细信息:
这是我的本地设置。
settings.gradle

include ':app'
rootProject.name='MyProject'

字符串
目录结构

MyProject
 | App
 |  | src
 |  | build.gradle
 | gradle
 | bitbucket-pipelines.yml
 | build.gradle
 | gradle.properties
 | gradlew
 | gradlew.bat
 | settings.gradle


你可以清楚地看到app模块的大小写不匹配。
我的本地运行时是Git bash,它是某种MinGW,而管道是使用android SDK镜像(ghcr.io/cirruslabs/android-sdk:34-ndk)运行的。看起来MinGW运行时在这里比android SDK镜像更不区分大小写,而android SDK镜像可能是真实的区分大小写的Linux。

相关问题