Я строю Kotlin
простой Hello-Worl, используя Gradle
my build.gradle
:
/* * This build file was generated by the Gradle 'init' task. * * This generated file contains a commented-out sample Java project to get you started. * For more details take a look at the Java Quickstart chapter in the Gradle * user guide available at https://docs.gradle.org/4.3.1/userguide/tutorial_java_projects.html */ // Apply the java plugin to add support for Kotlin apply plugin: 'kotlin' /* plugins { id "org.jetbrains.kotlin.jvm" version "1.1.60" } */ buildscript { ext.kotlin_version = '1.1.60' // In this section you declare where to find the dependencies of your project repositories { mavenCentral() // jcenter() } // In this section you declare the dependencies for your production and test code dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } sourceSets { main.kotlin.srcDirs += 'src/kotlin' main.resources.srcDirs += 'src/resources' } dependencies { compile 'org.slf4j:slf4j-api:1.7.7' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" testCompile 'junit:junit:4.12' } kotlin { experimental { coroutines 'enable' } } compileKotlin { kotlinOptions.suppressWarnings = true } compileKotlin { kotlinOptions { suppressWarnings = true } }
и Main.kt
:
fun main(args: Array<String>) { println("kotlin!") }
после запуска Gradle buil
я получил следующую ошибку:
Примечания: – Я новичок в gradle
так, как gradle
ниже:
Шаг 1:
Шаг 2:
ОБНОВИТЬ
В соответствии с первым ответом я попытался получить файлы локально, я создал другую папку с именем lib
и загрузил в нее файлы * .jar, поэтому я получил gradle.build
как gradle.build
ниже:
buildscript { ext.kotlin_version = '1.1.60' repositories { flatDir { dirs 'libs' } } dependencies { classpath fileTree(include: ['*.jar'], dir: 'libs') classpath files('kotlin-gradle-plugin-1.1.60.jar') } } apply plugin: 'kotlin' sourceSets { main.kotlin.srcDirs += 'src/kotlin' main.resources.srcDirs += 'src/resources' } dependencies { compile 'org.slf4j:slf4j-api:1.7.7' compile name: 'kotlin-stdlib-1.1.60' testCompile 'junit:junit:4.12' } kotlin { experimental { coroutines 'enable' } } compileKotlin { kotlinOptions.suppressWarnings = true } compileKotlin { kotlinOptions { suppressWarnings = true } }
Ниже пересмотренной структуры и новой ошибки я получил:
ОБНОВИТЬ
U скопировал все необходимые репозитории .jar и .pom в папку:
C: \ Users \ .m2 \ репозиторий \ орг \ JetBrains \
Я скопировал например: … \ kotlin \ kotlin-std \ 1.1.60 \ kotlin-stdlib-1.1.60.jar И … \ аннотации \ 13.0 \ annotations-13.0.jar
И использовали
mavenLocal ()
Но все равно получить ту же ошибку 🙁
Я обнаружил, что проблема связана с прокси-сервером нашей компании, который предотвратил такую ситуацию, поэтому я решил проблему, загрузив требуемый репозиторий в моем ноутбуке с отверстиями, а затем скопировал их в компанию.
Во-первых, я создал отдельную папку, назвав ее jars
.
После этого я загрузил требуемый файл и сохранил его в папке с jars
.
Затем я установил его в локальный репозиторий с помощью команды:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Такие как:
mvn install:install-file -Dfile=kotlin-stdlib-1.1.60.jar -DgroupId=org.jetbrains.kotlin -DartifactId=kotlin-stdlib -Dversion=1.1.60 -Dpackaging=jar
Заметки:
Чтобы сделать это правильно, maven
необходимо загрузить здесь и добавить в path
.
И команда, указанная выше, должна запускаться из папки jars
, содержащей загруженный репозиторий:
Затем я обнаружил, что репозиторий был загружен в папку C:\Users\<user>\.m2\
:
После копирования их в свой офисный ноутбук я вызвал их из mavenLocal()
:
repositories { mavenCentral() mavenLocal() } dependencies { compile ("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") }
ОБНОВИТЬ
Чтобы загрузить полный репозиторий за один раз вместо загрузки необходимых файлов один за другим, можно использовать следующую команду:
mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version
Такие как:
mvn dependency:get -DrepoUrl=https://mvnrepository.com/artifact/org.jetbrains.kotlin -Dartifact=org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.60
По какой-то причине 3 файла не удалось загрузить, поэтому я их загрузил вручную и установил в соответствии с начальным объяснением, файлы:
org.jetbrains.kotlin: kotlin-android-расширения: jar: original: 1.1.60 => здесь
org.jetbrains.kotlin: kotlin-compiler-runner: jar: original: 1.1.60 => здесь
org.jetbrains.kotlin: kotlin-build-common: jar: tests: 1.1.60 => здесь
и установили их с помощью следующих команд:
mvn install:install-file -Dfile=kotlin-android-extensions-1.1.60.jar -DgroupId=org.jetbrains.kotlin -DartifactId=kotlin-android-extensions -Dversion=1.1.60 -Dpackaging=jar mvn install:install-file -Dfile=kotlin-compiler-runner-1.1.60.jar -DgroupId=org.jetbrains.kotlin -DartifactId=kotlin-compiler-runner -Dversion=1.1.60 -Dpackaging=jar mvn install:install-file -Dfile=kotlin-build-common-1.1.60.jar -DgroupId=org.jetbrains.kotlin -DartifactId=kotlin-build-common -Dversion=1.1.60 -Dpackaging=jar
Учитывая все вышеизложенное, приведенный ниже build.gradle
отлично работал для меня:
// set up the kotlin-gradle plugin buildscript { ext.kotlin_version = '1.1.60' repositories { mavenLocal() // mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } // apply the kotlin-gradle plugin apply plugin: "kotlin" // add kotlin-stdlib dependencies. repositories { mavenLocal() // mavenCentral() } dependencies { //dependencies from a remote repositor compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" //local file, that are not coming from repository, let's say my own jar files compile files('libs/Display.jar') compile fileTree(dir: 'libs', include: '*.jar') } jar { manifest { //Define mainClassName as: '[your_namespace].[your_arctifact]Kt' attributes ('Main-Class': 'MainKt', "Implementation-Title": "Gradle", "Implementation-Version": 1) } // NEW LINE HERE !!! from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } sourceSets { main.kotlin.srcDirs += 'src/kotlin' main.resources.srcDirs += 'src/resources' } kotlin { experimental.coroutines 'enable' } compileKotlin { kotlinOptions.jvmTarget= 1.8 // optional, Minimum jvmTarget of 1.8 needed since Kotlin 1.1 kotlinOptions.suppressWarnings = true }