java - 如何从 gradle 构建中的类中访问项目属性?

标签 java gradle groovy

我在 gradle 构建文件中有以下内容,我想做的是在复制文件之前过滤文件的内容,因此我创建了一个自定义过滤器类,每次复制文件时都会调用该过滤器类。现在我尝试从 MyFilter 类访问项目属性,例如我尝试打印 profile 属性,但到目前为止我还没有找到方法,这可以做到吗?

通常,我会在使用 gradlew build -Pprofile=prd 启动构建文件时传递配置文件,但我仍然没有找到从 MyFilter 访问这些属性的方法> 类。

apply plugin: 'java'
tasks.build.finalizedBy('copyFiles')

class MyFilter extends FilterReader  {


    MyFilter(Reader input) {
        super(new StringReader(""))
        //tried many things to print the profile property, nothing worked.
    }
    }
def profile = project.properties['profile'] ?: "dev"
def amqa = project.properties['amqa'] ?: "127.0.0.1"
def amqaEG = project.properties['amqaEG'] ?: "127.0.0.1"

task copyFiles(type: Copy) {
project.properties['amqa']
    from ('config')
    into ('.')
    include('**/*_#' + profile + '*')
    rename { filename ->
        filename.replace '_#' + profile, ''
    }

filter MyFilter

}

最佳答案

您需要扩展BaseParamFilterReader ,然后在 setParameters(final Parameter[]parameters) 方法中获取参数。

Copy 任务具有接受参数的 filter 重载,例如:

过滤器(ReplaceTokens, token :[版本:'2.3.1'])

你可能会写这样的东西

过滤器(MyFilter,配置文件:配置文件)

调查ReplaceTokens可能有帮助

关于java - 如何从 gradle 构建中的类中访问项目属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946891/

相关文章:

java - 一个参数的方法,其数据类型为 Passenger 的 ArrayList

java - 在 XMPP 中加入 MUC 房间时出错(smack)

android - 库依赖资源覆盖 Android 中的主要源集

java - 坐标系之间转换的 geotools 程序(gradle 构建)中的 NoSuchAuthorityCodeExcpetion

java - 在我的 groovy 脚本中使用 jenkins subversion 凭证

regex - 如何在 Groovy 中匹配字符串和模式

grails - Groovy 2.4.3 中的闭包解决策略在 trait 上下文中不起作用

java - FirebaseUI RecyclerView如何添加一个元素到定义的位置

java - 计算两个 Date 或 Calendar 对象之间的年数,考虑闰年

maven - 带有 Maven 子模块的 gradle