使用gradle

时间:2016-08-10 14:20:12

标签: gradle

我有一个nodejs应用程序,目录结构设置如下:

.
├── api
│   └── swagger
│       └── swagger.yaml
└── service
    ├── app.js
    ├── build.gradle
    ├── lib
    │   └── utils.js
    └── package.json

以下是来自build.gradle的代码段,它尝试创建tar所需文件。

apply plugin: 'maven-publish'

def jsLib = 'lib/'
def packageJson = 'package.json'
def swagger = '../api/swagger/swagger.yaml'
def appJs = 'app.js'

task pack(type: Tar) {
    from(project.projectDir)
    include(packageJson)
    include(swagger)
    include(jsLib)
    include(appJs)
    baseName rootProject.name + '.' + project.name
    version rootProject.version
    compression = Compression.GZIP
    extension = 'tgz'
}

这部分有效,生成的tar包含除swagger.yaml之外的所有内容,该内容位于service/的父目录中。

如何包含此文件?

2 个答案:

答案 0 :(得分:0)

如果serviceapi都是1.)父项目的子项目或2.)更复杂的子项目层次结构的一部分,您可以使用:

1.) from(project.parent.projectDir) {
    include **/*.yaml
}

2.) from(project.rootProject.projectDir) {
    include **/*.yaml
}

如果没有,则必须明确指定目录:

def apiDir = new File(project.parent.projectDir.parentFile, "api")
from(apiDir) {
    include **/*.yaml
}

答案 1 :(得分:0)

task pack(type: Tar) {
    from(project.projectDir)
    include(packageJson)
    include(jsLib)
    include(npmrc)
    include(newrelic)
    include(appJs)
    include(config)
    from (project.parent.projectDir)
    include('api/swagger/swagger.yaml')
    baseName rootProject.name + '.' + project.name
    version rootProject.version
    compression = Compression.GZIP
    extension = 'tgz'
}