Why won't Gradle find my locally published plugin? - kotlin

I have one project which contains and publishes a Gradle plugin:
plugins {
`java-gradle-plugin`
`kotlin-dsl`
kotlin("jvm") version "1.5.31"
`maven-publish`
}
project.group = "com.company.gradle"
project.version = "1.0.0"
repositories {
mavenCentral()
gradlePluginPortal()
}
gradlePlugin {
plugins.create("pomPlugin") {
id = "com.company.gradle.pom"
implementationClass = "com.company.gradle.pom.PomPlugin"
}
}
Building this and publishing (via ./gradlew publishToMavenLocal) succeeds without errors. After it completes, my local maven repo ~/.m2/reposiory contains:
./com/company/
./com/company/gradle
./com/company/gradle/pom
./com/company/gradle/pom/maven-metadata-local.xml
./com/company/gradle/pom/1.0.0
./com/company/gradle/pom/1.0.0/pom-1.0.0.jar
./com/company/gradle/pom/1.0.0/pom-1.0.0.module
./com/company/gradle/pom/1.0.0/pom-1.0.0.pom
./com/company/gradle/pom/com.company.gradle.pom.gradle.plugin
./com/company/gradle/pom/com.company.gradle.pom.gradle.plugin/maven-metadata-local.xml
./com/company/gradle/pom/com.company.gradle.pom.gradle.plugin/1.0.0
./com/company/gradle/pom/com.company.gradle.pom.gradle.plugin/1.0.0/com.company.gradle.pom.gradle.plugin-1.0.0.pom
Then I have another project that tries to use the plugin:
buildscript {
repositories {
mavenLocal()
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
kotlin("jvm") version "1.6.10"
id("com.company.gradle.pom") version "1.0.0"
}
repositories {
google()
mavenCentral()
mavenLocal()
}
but Gradle cannot resolve the plugin:
* What went wrong:
Plugin [id: 'com.foxit.gradle.pom', version: '1.0.0'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.foxit.gradle.pom:com.foxit.gradle.pom.gradle.plugin:1.0.0')
Searched in the following repositories:
Gradle Central Plugin Repository

Add this at the top of your settings.gradle file in the project where you want to use your plugin.
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
}
}
The gradlePluginPortal() bit is for "real" gradle plugins which have been published.
The mavenLocal() bit is for your locally published plugins.
The repositories blocks you have in the build.gradle are for dependencies and not plugins.

Related

Android Studio can't resolve androix.ui dependency although repository `google()` has been added

I am kind of frustated. I want to use the androidx.ui dependency but gradle denies to download it.
Here is my build.gradle.kts file:
import org.jetbrains.compose.compose
plugins {
kotlin("jvm") version "1.4.0"
id("org.jetbrains.compose") version "0.1.0-m1-build62"
}
buildscript {
repositories {
jcenter()
google()
mavenCentral()
maven { setUrl("https://maven.google.com") }
}
}
allprojects {
repositories {
jcenter()
google()
mavenCentral()
maven { setUrl("https://maven.google.com") }
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
}
dependencies {
implementation(compose.desktop.currentOs)
implementation("androidx.ui:ui-tooling:1.0.0-alpha07")
}
compose.desktop {
application {
mainClass = "MainKt"
}
}
Error:
Could not resolve androidx.ui:ui-tooling:1.0.0-alpha07.
Possible solution:
Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html

maven-publish missing artifact to repository

II'm trying to publish my lib but i'm having some problems related to its publication.
I'm using this library https://github.com/vanniktech/gradle-maven-publish-plugin to publish my project on maven central (oss), but, this for some reason only -sources.jar, -javadoc.jar and .module are being pushed to the repository, however file-butler-0.1.4-SNAPSHOT.jar is missing :(
Does someone have any idea?
build.gradle(module)
plugins {
id 'java-library'
id 'kotlin'
id 'kotlin-kapt'
}
dependencies {
def gson = "com.google.code.gson:gson:2.8.6"
def moshi = "com.squareup.moshi:moshi:1.11.0"
def moshCodeGen = "com.squareup.moshi:moshi-kotlin-codegen:1.11.0"
implementation(Deps.core.kotlin)
implementation(gson)
implementation(moshi)
kapt(moshCodeGen)
testImplementation(Deps.testing.truth)
testImplementation(Deps.testing.jUnit)
kaptTest(moshCodeGen)
}
sourceSets {
main.kotlin.srcDirs += 'src/main/kotlin'
main.java.srcDirs += 'src/main/java'
}
apply plugin: "com.vanniktech.maven.publish"
build.gradle.kts(project)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:4.1.0")
classpath(kotlin("gradle-plugin", "1.4.10"))
classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.4.10")
classpath("com.vanniktech:gradle-maven-publish-plugin:0.13.0")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenCentral()
google()
jcenter()
}
}
task<Delete>("clean") {
delete(rootProject.buildDir)
}
ps: publishToMavenLocal publish the expected jar to my local repository.

An error occur When i try to build android app

I got this error when i try to build android app
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'
My top-level file:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
"Compile" Scope for the dependencies are being taken away from Android development, so instead use "Implementation" as a scope for all the dependencies. You can change it by right click on the folder (e.g. App) then "module setting>dependencies>scope" and then sync the project.
There is many solution according to github issues
first remember android have removed Compile Scope for the dependencies new Implementation
one way
right click App then
module setting--->dependencies---->scope and then sync your project
Other way
upgrade classpath com.google.gms:google-services to classpath 'com.google.gms:google-services:3.2.1' in file in build.gradle
buildscript {
repositories {
}
dependencies {
classpath 'com.google.gms:google-services:3.2.1'<-------*****
}
}
allprojects {
repositories {
}
}
}

Unable to resolve dependency for :Could not resolve org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.8.1-rc13

I am getting a gradle build error for unresolved dependencies in a Kotlin/Native sample project.
Failed to resolve: org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.8.1-rc13
my build.gradle (common module) looks like
apply plugin: 'kotlin-platform-common'
apply plugin: 'kotlinx-serialization'
repositories {
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
jcenter{ url "https://jitpack.io" }
jcenter()
maven { url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies" }
maven { url "http://kotlin.bintray.com/kotlin-dev" }
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
maven { url "https://dl.bintray.com/sandwwraith/libs-preview/"}
mavenLocal()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
}
Build.gradle(platform-android level)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-platform-android'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.phonepe.mykotlinnativesample"
minSdkVersion 15
targetSdkVersion 27
versionCode 2
versionName "2.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
def butterknife_version = '8.8.1'
repositories{
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
jcenter{ url "https://jitpack.io" }
jcenter()
maven { url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies" }
maven { url "http://kotlin.bintray.com/kotlin-dev" }
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
maven { url "https://dl.bintray.com/sandwwraith/libs-preview/"}
mavenLocal()
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "com.jakewharton:butterknife:$butterknife_version"
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.google.dagger:dagger-android:2.16'
implementation 'com.google.dagger:dagger-android-support:2.16' // if you use the support libraries
kapt 'com.google.dagger:dagger-android-processor:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'
implementation 'com.android.support:exifinterface:27.1.1'
expectedBy project(":common")
}
Project level Build.gradle looks like:
apply plugin: 'kotlinx-serialization'
buildscript {
ext.kotlin_version = '1.3.0-rc-131'
ext.serialization_version = '0.8.1-rc13'
ext.serializationRepo = "https://dl.bintray.com/kotlin/kotlinx/"
ext.serialization_plugin_version="1.3.0-rc-131"
repositories {
google()
jcenter()
maven {
url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies"
}
maven { url "https://kotlin.bintray.com/kotlinx" }
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
maven { url "http://kotlin.bintray.com/kotlin-dev" }
maven { url "https://plugins.gradle.org/m2/" }
maven { url "https://dl.bintray.com/sandwwraith/libs-preview/"}
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:0.9.2"
classpath "org.jetbrains.kotlin:kotlin-serialization:$serialization_plugin_version"
}
}
allprojects {
repositories {
google()
jcenter()
maven {
url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies"
}
maven { url "https://kotlin.bintray.com/kotlinx" }
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
maven { url "http://kotlin.bintray.com/kotlin-dev" }
maven { url "https://dl.bintray.com/sandwwraith/libs-preview/"}
mavenLocal()
}
}
repositories {
google()
jcenter()
maven {
url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies"
}
maven { url "https://kotlin.bintray.com/kotlinx" }
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
maven { url "http://kotlin.bintray.com/kotlin-dev" }
maven { url "https://dl.bintray.com/sandwwraith/libs-preview/"}
mavenLocal()
}
task clean(type: Delete) {
delete rootProject.buildDir
}
settings.gradle::
include ':android', ':common', ':myapplication'
enableFeaturePreview('GRADLE_METADATA')
What are the correct versions and repositories that I can use to be able to use serialization?
Setup you've attached is kinda strange, because you're applying Kotlin/Native's 'konan' plugin to the same module as 'kotlin-platform-common' plugin. First of all, 'konan' is deprecated and replaced with 'kotlin-platform-native'. Secondly, these plugins should be applied to different gradle modules, see kotlin multiplatform reference.
Regarding serialization, it now comes in two flavours: One, for Kotlin 1.2 has version numbers 0.6.x (0.6.2 for 1.2.70) and does not support Kotlin/Native; only separate json parser is provided instead. Second flavour, for Kotlin 1.3 is under development phase and has number 0.8.x-rc13 (latest one is 0.8.1-rc13 for Kotlin/Native 0.9.2) and it does contain K/N support in a separate artifact with coordinates "kotlinx-serialization-runtime-native". Serialization docs for Kotlin 1.3 preview reveal more information: https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/eap13.md .
There is also a dedicated example of setup which contains a ready-to-use stub of multiplatform project with serialization. Branch native_preview uses aforementioned Kotlin 1.3-rc, K/N 0.9.2 and serialization 0.8.1.

Apache Components and Spring Boot

I am trying to include the latest version of the apache httpclient libraries in my spring boot application. When I try to compile the app I get a bunch of package does not exist / cannot find symbol.
ex. error: package org.apache.http does not exist
ex. error: package org.apache.http.client.config does not exist
ex. error: package org.apache.http.conn.socket does not exist
ex. class HttpContext cannot find symbol
Below are the relevant parts of my build.gradle
buildscript {
repositories {
maven { url "https://repo.spring.io/libs-release" }
mavenLocal()
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
repositories {
mavenLocal()
mavenCentral()
maven { url "https://repo.spring.io/libs-release" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web") {
//excluding a particular transitive dependency:
exclude group: 'commons-logging' //by group
exclude group: 'ch.qos.logback' //by group
}
compile 'org.apache.httpcomponents:httpclient:4.4'
compile 'org.apache.httpcomponents:httpcore:4.4'
compile 'org.apache.httpcomponents:httpmime:4.4.1'
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
Any idea why id doesn't seem to be able to find the classes?
Thanks,
Nathan