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

goqiplq2  于 2024-01-07  发布在  Jenkins
关注(0)|答案(2)|浏览(274)

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

  1. Build Setup tasks
  2. -----------------
  3. init - Initializes a new Gradle build.
  4. wrapper - Generates Gradle wrapper files.
  5. Help tasks
  6. ----------
  7. buildEnvironment - ...
  8. ...

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

  1. Build tasks
  2. -----------
  3. ...
  4. war - Generates a war archive with all the compiled classes, the web-app content and the libraries.
  5. Build Setup tasks
  6. -----------------
  7. init - Initializes a new Gradle build.
  8. wrapper - Generates Gradle wrapper files.
  9. Documentation tasks
  10. -------------------
  11. javadoc - Generates Javadoc API documentation for the main source code.
  12. Help tasks
  13. ----------
  14. ...
  15. IDE tasks
  16. ---------
  17. ...
  18. Run tasks
  19. ---------
  20. jettyRun - Starts an example Jetty server with your language
  21. Verification tasks
  22. ------------------
  23. check - Runs all checks.
  24. test - Runs the unit tests.


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

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. }
  5. dependencies {
  6. classpath 'org.xtext:xtext-gradle-plugin:2.0.4'
  7. }
  8. }
  9. subprojects {
  10. ext.xtextVersion = '2.17.0'
  11. repositories {
  12. jcenter()
  13. }
  14. apply plugin: 'java'
  15. dependencies {
  16. compile platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}")
  17. }
  18. apply plugin: 'org.xtext.xtend'
  19. apply from: "${rootDir}/gradle/source-layout.gradle"
  20. apply plugin: 'eclipse'
  21. group = 'ic.ac.uk.mydsl'
  22. version = '1.0.0-SNAPSHOT'
  23. sourceCompatibility = '1.8'
  24. targetCompatibility = '1.8'
  25. configurations.all {
  26. exclude group: 'asm'
  27. }
  28. }


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

bq9c1y66

bq9c1y661#

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

57hvy0tb

57hvy0tb2#

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

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

字符串
目录结构

  1. MyProject
  2. | App
  3. | | src
  4. | | build.gradle
  5. | gradle
  6. | bitbucket-pipelines.yml
  7. | build.gradle
  8. | gradle.properties
  9. | gradlew
  10. | gradlew.bat
  11. | settings.gradle


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

展开查看全部

相关问题