我正在使用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中我的父目录的图像:
2条答案
按热度按时间bq9c1y661#
您确定从Jenkins上的同一目录和本地运行
./gradlew tasks
吗?如果您从根项目目录运行Gradle命令,则会显示根项目的任务,但不会显示子项目的任何任务。您的根项目似乎没有应用任何插件,因此,在根项目中不会有任何像war
这样的特定于插件的任务。57hvy0tb2#
又迟到了,但在我的情况下找到了这个问题的答案。
问题和解决方案:
settings.gradle包含要构建的模块的名称。在我的设置中,模块是用小写写的,而目录实际上是 Camel 大小写。解决方案当然是纠正目录名称或settings.gradle中的条目,以便大小写匹配。
详细信息:
这是我的本地设置。
settings.gradle
字符串
目录结构
型
你可以清楚地看到app模块的大小写不匹配。
我的本地运行时是Git bash,它是某种MinGW,而管道是使用android SDK镜像(ghcr.io/cirruslabs/android-sdk:34-ndk)运行的。看起来MinGW运行时在这里比android SDK镜像更不区分大小写,而android SDK镜像可能是真实的区分大小写的Linux。