файл сборки gradle показывает ошибку во время сборки - PullRequest
0 голосов
/ 14 мая 2019

Когда я объединяюсь с другим файлом build.gradle для объединения двух разных функций в один, он показывает ошибку следующим образом:

startup failed:
build file 'C:\Users\sobhit.s\Pictures\API-Update\build.gradle': 89: all buildscript {} blocks must appear before any plugins {} blocks in the script

See https://docs.gradle.org/4.0/userguide/plugins.html#sec:plugins_block for information on the plugins {} block

 @ line 89, column 1.
   buildscript {
   ^

1 error

Open File

import java.util.concurrent.TimeUnit

plugins {
    id 'java'
}

apply plugin: 'java'    
group 'api_automation'
version '1.0-SNAPSHOT'   
sourceCompatibility = 1.8    
repositories {
    mavenCentral()
} 
test {
    reports {
        junitXml.enabled = true
        html.enabled = false
        reports.junitXml.destination = file("test-output/reports/")
    }
    useTestNG()
            {
                useDefaultListeners = true
                options.suites("src/test/java/testApi_Test_Scripts/smsApiAutomationSuite.xml")
                            }
}
sourceSets {
    main {
        runtimeClasspath = files(output.resourcesDir) + runtimeClasspath
    }
    test {
        runtimeClasspath = files(output.resourcesDir) + runtimeClasspath
    }
}
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
    }
}

apply plugin: "io.spring.dependency-management"
dependencyManagement {
    imports {
        mavenBom 'software.amazon.awssdk:bom:2.0.0'
    }
}
dependencies {
    compile group: 'io.rest-assured', name: 'rest-assured', version: '3.0.2'
    testCompile group: 'org.testng', name: 'testng', version: '6.8.+'
    //An assertion library that is better than JUnit defaults
    testCompile 'org.easytesting:fest-assert-core:2.0M10'
    //Better reporting for testng.  It outputs a nice html report
    testCompile 'org.uncommons:reportng:1.1.4'
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.15'
    compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
    compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
    compile group: 'com.googlecode.htmlcompressor', name: 'htmlcompressor', version: '1.5.2'
    compile group: 'commons-dbutils', name: 'commons-dbutils', version: '1.6'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.6'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.6'
    compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.5'
    compile group: "com.github.fge", name: "json-schema-validator", version: "2.2.6"
    compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
    compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1'
    compile group: 'org.json', name: 'json', version: '20160810'
    compile group: 'org.uncommons', name: 'reportng', version: '1.1.4'
    compile group: 'com.google.code.guice-repository', name: 'guice-repository', version: '2.1.0'
    compile group: 'org.easytesting', name: 'fest-assert-core', version: '2.0M10'
    compile group: 'org.uncommons', name: 'reportng', version: '1.1.4'
    compile group: 'org.apache.commons', name: 'commons-csv', version: '1.5'
    compile group: 'org.apache.commons', name: 'commons-exec', version: '1.3'
    compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
    compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
    compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.6.1'
    compile 'com.relevantcodes:extentreports:2.41.2'
    compile group: 'com.sun.mail', name: 'javax.mail', version: '1.6.0'
    compile group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2'
    compile 'software.amazon.awssdk:kinesis'
    compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.534'
    compile group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb', version: '1.11.539'
    compileClasspath group: 'org.testng', name: 'testng', version: '6.8.+'
}
test {
    ignoreFailures = true
}

Это build.gradle после объединения.Также я не уверен, каков стандартный способ создания build.gradle.Любая помощь будет принята с благодарностью.

Я только что добавил build.script и mavem bom с тех пор это проблема.

AWS which I added to my existing and got the above one

1 Ответ

1 голос
/ 14 мая 2019

В вашем объединенном скрипте вы смешиваете обе нотации для применения плагинов Gradle: нотацию buildscript{} и DSL plugins {} (см. Дополнительную информацию об этих двух нотациях здесь: https://docs.gradle.org/current/userguide/plugins.html#sec:binary_plugins)

Хотя возможно смешивать обе нотации, есть ограничение Gradle: вы должны поместить блок plugins{} в первую позицию в скрипте, но если у вас также есть блок buildscript{}, то он должен быть помещен перед plugins{} блок. (Я постараюсь найти указатель на это ограничение в официальной документации)

РЕДАКТИРОВАТЬ: см. Описание ограничений блока plugins{} здесь :

Блок plugins {} также должен быть оператором верхнего уровня в buildscript. Он не может быть вложен в другую конструкцию (например, оператор if или цикл for)

Итак: просто переместите блок buildscript {} вверху вашего скрипта.

Примечание: лучшим решением было бы избавиться от блока buildscript {}, который является «старым» синтаксисом:

использование:

plugins {
  id "io.spring.dependency-management" version "1.0.7.RELEASE"
}

вместо

buildscript {
  repositories {
      mavenCentral()
  }
  dependencies {
     classpath "io.spring.gradle:dependency-management-plugin:1.0.7.RELEASE"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...