从其他目录运行gradle命令

时间:2018-12-19 14:21:14

标签: java gradle

我有文件夹“ A”和文件夹“ B”
文件夹“ B”具有gradle代码 我想从文件夹“ B”的文件夹“ A”中运行declare @input XML= N'<products> <product> <ProductDescription><![CDATA[SOMETHIN''WHATEVER]]></ProductDescription> </product> <product> <ProductDescription><![CDATA[TYPICAL_TEXT ΜΑΣΚΑΡΑ]]></ProductDescription> </product> </products>'; SELECT Item.value('(ProductDescription)[1]', 'nvarchar(max)') as ProductDescription from @input.nodes('//product') AS T(Item) gradle clean命令
我该怎么做?

4 个答案:

答案 0 :(得分:1)

对我来说这有效

gradle clean build --console=plain -p ${projectPath}

其中: clean:是为了“清理” build / libs文件夹。 普通控制台:仅在控制台中显示构建结果

enter image description here

答案 1 :(得分:0)

使用-b参数(即--build-file

cd A
gradle -b ../B/build.gradle 

答案 2 :(得分:0)

您应该使用“开始目录”参数(-p, --project-dir:请参见Environment options

我认为其他可用参数-b --build-file也可以工作,但是它的主要用法是当构建脚本文件名与默认build.gradle不同时。

答案 3 :(得分:0)

这比看起来要难。 尽管为--project-dir,--gradle-user-home和--build-file设置了不同的值 无论做什么,当您从build.gradle中“ println project.projectDir”时 脚本,它将始终向后报告“ build.gradle”所在的目录。

我想重新整理gradle中的内容,因为gradle会污染您的根目录 有很多垃圾! “清洁代码”(罗伯特·C·马丁)的鲍伯叔叔可能会将这种行为称为“粗鲁的代码”。

经过一整天的搜索,我终于找到了答案。 这是我的项目结构:

<root_folder>
 |
 +--[ .git       ]
 +--[ .gitignore ]
 |
 +--[-]src/main/java
 |   |
 |   +--Main.java
 |
 +--[-]RUN_ON_CMD
     |
     +--[-]Gradle
         +--[ build.gradle ]
         +--[ RUN.sh ]
         |
         +--[-]GENERATED

.gitignore:

GENERATED/

build.gradle:

apply plugin: 'java'                  
apply plugin: 'application'    

println "[project.projectDir]:"
println project.projectDir
mainClassName = 'Main'

sourceSets {
    main {
        java {
            //:Because "build.gradle" lives in:
            //:<root>\RUN_ON_CMD\Gradle\GENERATED\
            srcDir '../../../src/main/java'
        }
    }
}

RUN.sh

build_gradle=$( realpath build.gradle )
echo $build_gradle

current_directory=$( realpath "." )
echo $current_directory

generated=${current_directory}/"GENERATED"
echo $generated

cp $build_gradle $generated/"build.gradle"
gradle run -b $generated/"build.gradle" -g $generated --no-daemon

main.java

public class 
Main{
    public static void 
    main( 
        String[] args
    ){

        System.out.println("[MAIN]");

    }
}

要运行:

在“ Gradle ”文件夹中执行“ git bash here ”。 然后输入:

  

./ RUN.sh

然后按ENTER


我的输出:(TDD_JAVA == root_folder)

JMIM@DESKTOP-JUDCNDL MINGW64 /c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle (master)
$ ./RUN.sh
/c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle/build.gradle
/c/DEV/REPO/GIT/TDD_JAVA
/c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle
/c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle/GENERATED
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing

> Configure project :
[project.projectDir]:
C:\DEV\REPO\GIT\TDD_JAVA\RUN_ON_CMD\Gradle\GENERATED

> Task :run
[MAIN]

BUILD SUCCESSFUL in 8s
2 actionable tasks: 1 executed, 1 up-to-date

所有通过gradle生成的垃圾都被放入 “ GENERATED ”文件夹。然后,我的.gitignore确保不要提交任何垃圾邮件。