stefma / androidartifacts Goto Github PK
View Code? Open in Web Editor NEWA super easy way to create Android and Java artifacts.
Home Page: https://androidartifacts.now.sh
License: Apache License 2.0
A super easy way to create Android and Java artifacts.
Home Page: https://androidartifacts.now.sh
License: Apache License 2.0
Currently everything is developed in groovy.
I think it make sense to move it to kotlin. :)
In #67 we increased the properties and especially the complexiety of the project.
We have to update the README with a "property" section which explains each of them...
Should work.. ๐
Currently there is a lot of "overhead" inside the build.gradle.kts
which setup some tasks about publishing the docs to zeit/now:
AndroidArtifacts/build.gradle.kts
Lines 46 to 89 in 4b48fe3
Move all the stuff into the buildSrc/.
The best solution would be to provide a our own Gradle Plugin for that...
The plugin should be applicable however when it is applied.
Currently the plugin needs to be applied after the com.android.library
plugin & the org.jetbrains.kotlin
plugin.
Which is a bad behaviour.
We should change that so that the plugin can be applied as "first" plugin too...
Currently we create the kdoc only for the kotlin.android plugin.
But not for the normal jvm kotlin...
Currently we ship the plugin with the AGP plugin 3.1.4:
AndroidArtifacts/build.gradle.kts
Line 26 in 4b48fe3
Check if it works when a consumer have applied the AGP in version 3.2.0.
Gradle recently announced dependencies a source dependencies.
Add a section (to the readme or maybe a new markdown file(?)) which explains how to apply it as source dependency.
The sources of this lib aren't published to bintray.
Could not find androidartifacts-sources.jar (guru.stefma.androidartifacts:androidartifacts:1.0.0).
Searched in the following locations:
https://jcenter.bintray.com/guru/stefma/androidartifacts/androidartifacts/1.0.0/androidartifacts-1.0.0-sources.jar
It would be very helpful when I could see the source in my IDE to debug bugs
Currently we blindly apply the dokka (or dokka-android) plugin when we detect a Kotlin module.
Instead of this we should react on the dokka plugin.
If it's applied, create the Kdoc. Otherwise don't.
Sent from my Nexus 5X using FastHub
Check how the java POM looks like if we have dependency with a filetree
and change the Android POM accordingly.
Add information how to apply the plugin with the Gradle Kotlin DSL.
We ship the dokka (and dokka-android) plugin as dependency together with this plugin.
This is a bad behaviour.
In this Gradle guide states that we can download the dependency later somehow...
We should do that and only download them when required...
If I publish in https://github.com/grandcentrix/ThirtyInch the new kotlin
module the -source.jar isn't created.
Find out if the Plugin Portal supports snapshots. See also this Slack thread of it.
Otherwise try to use jitpack. See #10
Setup CI to publish for each merge into master. Excluding any tags
Some guys reported that this lib don't work with kotlin. Try that out and fix it .
This repo work with kotlin...
The javadocs are not hundred percent correct.
It generates something like this:
instead of this:
This is a possible "issue" with external dependencies which should be added to the javadoc "options"
options {
links = ["http://docs.oracle.com/javase/7/docs/api/", "http://reactivex.io/RxJava/2.x/javadoc/"]
}
Don't know how to fix that...
Beside of this the @android.support.annotation.NonNull
annotation don't get added.
I don't know which kind of error this is but that should be fixed:
Required:
Currently:
Currently some descriptions of the tasks are wrong.
Check that and adjust if required
Since we only react on the fact that the android-plugin
is applied:
We can simply add it as compileOnly
(and maybe testRuntimeOnly
) dependency...
I have dependencies added with compileOnly
which should result in a dependency node in pom with scope = provided
.
The dependency is missing at all.
The POM is not correctly.
I talked with Stephan Oehme (Gradle Core Dev) in slack about it.
The Gradle configurations should be mapped in the following way into the POM:
&
Beside of it the tests are where I check the "POM correctly" are bad.
We should check if the POM contain everything in the same order. Otherwise they check a different version-tag in the POM
In #27 we have created three different plugins.
Now we should provide one single entrypoint plugin which should react on the applied plugins.
That mean that the plugin should detect if either of the "generation plugin" is applied and should then pick (and apply) the correct provided plugin...
The license lambda requires a min version of gradle 4.10 when using kotlin to work as documented. See SAM conversion for Kotlin functions
Action<LicenseSpec>
can't be converted automatically and results in this error:
license {
^ Type mismatch: inferred type is () -> Unit but Action<LicenseSpec> was expected
Workaround:
license(Action{
name = "Apache License, Version 2.0"
// ...
})
The workaround is less appealing but it works. Maybe this helps someone else running into this problem.
Sometimes, I don't know exactly in which cases, the following files won't be created:
myLibName/build/libs/
)myLibName/build/libs/
)myLibName/build/publications/release/
)To manually created it we can run the following task (same order like above):
The final (and maybe always working) gradle-wrapper command would be:
./gradlew clean build releaseAndroidSourcesJar releaseAndroidJavadocsJar generatePomFileForReleasePublication artifactoryPublish
Think how to proceed here.
Maybe add dependencies to artifactoryPublish
tha it should run after the other tasks...
Currently we have this todo:
This should be solved
The cache should be available.
We could just download it...
We should provide three different plugins:
Each of them could be applied like they want.
But they require that at least the corresponding "generate" plugin is already applied. The plugins above requires at last the following plugins (in the same order):
Try to upgrade.
Don't forget the consumer/
In #67 we deprecated the license method.
In the 2.0 release we should remove it completely...
Currently we use tasks.create
and getByName()
for getting tasks.
We should switch to the register
and named
function.
This is a breaking change!
It is available in Gradle 4.9+ only!
This plugin ships two different plugins:
The guru.stefma.androidartficats
and the guru.stefma.javaartifacts
plugin.
The first one has to be used when we are in an android project.
The second one has to be used when we are in an java or kotlin project.
The downsides of these are, that a consumer has to pick the correct plugin. Otherwise the build will probably fail.
Provide a new plugin called guru.stefma.artifacts
which just pick the correct plugin and apply it.
Make use of the pluginManager.withPlugin() {}
.
Setup the project that it will be possible to release it to the Gradle Portal
When I visit https://androidartifacts.now.sh/androidartifacts/guru.stefma.androidartifacts.plugin/ and press on "publications" the link does not work correctly.
This should be fixed that it redirect to the gradle doc...
Publish the kdoc for this project.
Also publish the Gradle "information" via the Gradle Site Plugin.
I think the best solution would be to deploy everything to a github page.
But this should be done automatically. I don't know how to commit/push directly to a github branch in this project.
A easier solution would be to deply the docs to now.sh via a static Dockerfile.
Currently we use classes from gradle internal. See AndroidLibrary class.
Try to get rid of that...
See also: novoda/bintray-release#112 & gradle/gradle#1842
Currently it is only part of https://github.com/StefMa/bintray-release
But it should be part of this plugin to use it everywhere
Think about a different plugin "applying".
Then we have a better separation...
Currently the kdoc can't be displayed correctly in inteelij.
See Kotlin/dokka#215
When we have a multi module project and name the artifactId
different than the Project#name
the generated POM file will pick the Project#name
instead of the artifactId
.
// settings.gradle
include(":libA", ":libB")
// libA
artifactId = "core"
// libB
artifactId = "internal
dependencies {
implementation(project(":libA"))
The POM of libB
will use libA
as artifactId instead of core
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.