Gradle 可以处理不符合默认约定的构建目录结构吗?

     2023-02-26     145

关键词:

【中文标题】Gradle 可以处理不符合默认约定的构建目录结构吗?【英文标题】:Can Gradle handle a build directory structure that does not conform default conventions? 【发布时间】:2011-02-02 20:01:09 【问题描述】:

我正在开发一个基于 java ant+ivy 的项目,该项目具有以下目录结构:

projectRoot/src
projectRoot/classes
projectRoot/conf
projectRoot/webservices

这在 ant 中运行良好,但我希望迁移到 gradle。

有没有办法在 Gradle 中定义非 maven 目录结构,或者我应该寻找 mavenize?

【问题讨论】:

【参考方案1】:

Gradle 很容易适应任何目录结构。请参阅 Gradle 用户指南的 Working with source sets 部分。

【讨论】:

【参考方案2】:

非标准项目目录结构示例(自定义布局):

sourceSets 
    main 
        java 
            srcDir 'sources/main/java'
        
        outputDir = file("$workDir/client/program")
        // For older version (now deprecated):
        //output.classesDir = "$workDir/client/program"
    
    test 
        java 
            srcDir 'sources/test/java'
        
        outputDir = file("$workDir/client/tests")
        // For older versions (now deprecated):
        //output.classesDir = "$workDir/client/tests"
        //output.resourcesDir = "$workDir/client/tests"
    
    resources 
        srcDirs 'sources/test/res'
    

【讨论】:

今天经过几个小时的搜索,这解决了我的问题。出于某种原因, --project-root 参数和 rootProject.projectDir 被忽略了吗?无论我做什么,build.gradle 中的“println project.projectDir”总是回显 build.gradle 所在的文件夹。使用:srcDir '../../src/main/java" 解决了这个问题。谢谢! 【参考方案3】:

试试:

sourceSets 
    main 
        java 
            srcDirs = ['src/java']
        
        resources 
            srcDirs = ['src/resources']
        
    

sourceSets 
    main.java.srcDirs += 'src/java'
    main.resources.srcDirs += 'src/resources'

【讨论】:

约定的目录结构说明

...心概念入手,看看Maven是如何实现自动化构建的。①POM②约定的目录结构③坐标④依赖⑤仓库⑥生命周期⑦插件和目标⑧继承⑨聚合 【第一个Maven工程】①创建约定的目录结构[1]根目录:工程名;[2]src目录:源码;[3]pom.xml文... 查看详情

如何在mac上安装gradle

参考技术AGradle介绍Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于ApacheIvy的强大的依赖管理支持maven,Ivy仓库支持传递性依赖管理,而不需... 查看详情

如何在mac上安装gradle

参考技术AGradle介绍Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于ApacheIvy的强大的依赖管理支持maven,Ivy仓库支持传递性依赖管理,而不需... 查看详情

如何在mac上安装gradle

参考技术AGradle介绍Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于ApacheIvy的强大的依赖管理支持maven,Ivy仓库支持传递性依赖管理,而不需... 查看详情

如何在mac上安装gradle

参考技术AGradle介绍Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于ApacheIvy的强大的依赖管理支持maven,Ivy仓库支持传递性依赖管理,而不需... 查看详情

gradle插件(代码片段)

Gradle本身只提供基本框架和核心概念,几乎所有的功能都是以插件的方式提供的。例如构建Java应用的功能就是通过Java插件实现的。Gradle内置了很多核心语言插件,基本上能满足大部分的构建工作,但有些插件没有内置或者有些... 查看详情

maven使用了一个标准的目录结构和一个默认的构建生命周期。(代码片段)

 Maven使用了一个标准的目录结构和一个默认的构建生命周期。约定优于配置当创建Maven工程时,Maven会创建默认的工程结构。开发者只需要合理的放置文件,而在pom.xml中不再需要定义任何配置。Maven-POMPOM代表工程对象模型。... 查看详情

androidstudio目录结构和gradle构建android项目(代码片段)

一,AndroidStudio的目录结构和工程项目介绍二,Eclipse工程与AndroidStudio工程的区别  1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运行。   2,工程结构不一样,在Eclipse中的一个Project就代表一... 查看详情

minecraft我的世界gradle构建,总是失败,求告诉详细教程。不要发网址,要会的人。不会的

minecraft我的世界gradle构建,总是失败,求告诉详细教程。不要发网址,要会的人。不会的不要回答。最近在项目中遇到一个不大,但是还蛮烦人的问题,在Maven的约定中,一个标准Java项目的代码结构如下:project--src--main--java--reso... 查看详情

安卓项目结构分析

安卓项目结构分析.gradle和.idea创建项目时as自动生成的一些文件,我们在开发的过程当中无需关心,也不要自己去手动编辑app在我们的开发过程中主要关注的地方,项目的代码、资源文件都是存放在这个目录下面的build这个目录中存... 查看详情

gradle介绍

Gradle概述与环境搭建Gradle介绍Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于ApacheIvy的强大的依赖管理支持maven,Ivy仓库支持传递性依赖管理... 查看详情

约定的目录结构(代码片段)

【概述】为了实现自动化构建,使用Maven时必须按照约定的目录结构创建项目代码。 【目录结构】  【说明】main:目录下存储Java项目的源代码文件。其中java存储源代码。resources存放资源文件,如:jdbc.properties等test:... 查看详情

gradle资源文件乱码解决

...构建时,会先处理资源文件(processResources环节)。在build.gradle中发现端倪:添加了过滤器但是没有排除个别文件。解决办法是排除掉/static目录。构建后 查看详情

gradle目录结构

参考技术A1)Gradle是一种项目建构工具。2)Gradle用了一种基于Groovy的领域特定语言(DSL,DemainSpecificLanguage)来声明项目设置,摒弃了XML(如ANT和Maven)的各种繁琐配置。❶当前项目的配置脚本➋GradleWrapper的执行jar包(后... 查看详情

gradle项目与maven项目相互转化(转)

 gradle这几年发展迅猛,github越来越多的项目都开始采用gradle来构建了,但是并不是所有人都对gradle很熟悉,下面的方法可以把gradle转成maven项目,前提gradle项目目录结构保持跟maven一样的约定,即/src/main/java这一套。 一、... 查看详情

项目构建--gradle--docker打包(五)

参考技术A如果添加了application插件的话,默认gradle-docker插件会添加一个distDocker的gradletask,用来构建一个包含所有程序文件的docker镜像。配置镜像名称和版本号其中镜像的tag默认的构成为:项目组/应用名称:版本号project.group:标... 查看详情

Android Studio:使用 Gradle KTS 构建文件的项目结构不可用

】AndroidStudio:使用GradleKTS构建文件的项目结构不可用【英文标题】:AndroidStudio:ProjectStructureunavailableusingGradleKTSBuildFiles【发布时间】:2020-04-1113:58:57【问题描述】:打开文件->项目结构。问题:它说“项目结构不适用于使用Grad... 查看详情

在 Mac 中从 gradle 构建定位 jar

】在Mac中从gradle构建定位jar【英文标题】:LocatingjarfromgradlebuildinMac【发布时间】:2019-06-1004:29:57【问题描述】:我对Mac还很陌生。我正在尝试为我的springboot项目构建一个jar文件。我在终端上运行了./gradlew。现在我不确定在哪里... 查看详情