В этом посте я хотел бы описать шаги, необходимые для публикации репозитория aar to maven . Есть другие руководства, которые охватывают эту тему, и некоторая информация, написанная здесь, получена из них, но в этом руководстве я хочу описать процесс шаг за шагом, не раскрывая подробно аспекты gradle, но сосредоточившись на создании ключа подписи и проверяя конечный результат.
меры
Чтобы опубликовать AAR в Maven Central вам нужно:
- Зарегистрируйте аккаунт и создайте новый тикет ( https://issues.sonatype.org )
- Загрузите (если вы используете OS X) GPGTools ( http://www.gpgtools.org/ )
- Изменить файлы проекта Gradle
- Создать ключ подписи
- Создайте, подпишите и опубликуйте свои файлы в хранилище Staging.
- Проверьте результат
Шаг 1 очень прост, и вы можете следовать этому официальному руководству. Обратите внимание, что прежде чем вы получите разрешение на загрузку своих файлов, вам обычно приходится ждать два рабочих дня после того, как вы открыли свой билет.
Изменить файлы проекта Gradle
Чтобы опубликовать свой aar, вы должны добавить / изменить некоторые файлы Gradle и создать некоторый файл свойств. Вся информация и файлы здесь скопированы здесь и здесь , и я не буду их объяснять, потому что они уже хорошо объяснены в этих блогах. Первый файл, который вы должны добавить в корень проекта, это maven_push.gradle, который я напишу здесь для простоты:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
apply plugin: 'maven' apply plugin: 'signing' def sonatypeRepositoryUrl if (isReleaseBuild()) { println 'RELEASE BUILD sonatypeRepositoryUrl = hasProperty( 'RELEASE_REPOSITORY_URL' ) ? RELEASE_REPOSITORY_URL } else { println 'SNAPSHOT BUILD' sonatypeRepositoryUrl = hasProperty( 'SNAPSHOT_REPOSITORY_URL' ) ? SNAPSHOT_REPOSITORY_URL } def getRepositoryUsername() { return hasProperty( 'nexusUsername' ) ? nexusUsername : "" } def getRepositoryPassword() { return hasProperty( 'nexusPassword' ) ? nexusPassword : "" } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } pom.artifactId = POM_ARTIFACT_ID repository(url: sonatypeRepositoryUrl) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) } pom.project { name POM_NAME packaging POM_PACKAGING description POM_DESCRIPTION url POM_URL scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } licenses { license { name POM_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } } } } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask( "uploadArchives" ) } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.allJava classpath += project.files(android.plugin.getRuntimeJarList().join(File.pathSeparator)) } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = 'javadoc' //basename = artifact_id from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' //basename = artifact_id from android.sourceSets.main.allSource } artifacts { //archives packageReleaseJar archives androidSourcesJar archives androidJavadocsJar } } |
а затем вы должны добавить / изменить gradle.properties
:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
VERSION_NAME= 1.2 VERSION_CODE= 1 GROUP=com.survivingwithandroid POM_DESCRIPTION=Android Weather Lib POM_URL=https: //github.com/survivingwithandroid/WeatherLib POM_SCM_URL=https: //github.com/survivingwithandroid/WeatherLib POM_SCM_CONNECTION=scm:git @github .com:survivingwithandroid/weatherlib.git POM_SCM_DEV_CONNECTION=scm:git @github .com:survivingwithandroid/weatherlib.git POM_LICENCE_NAME=The Apache Software License, Version 2.0 POM_LICENCE_URL=http: //www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo POM_DEVELOPER_ID=survivingwithandroid POM_DEVELOPER_NAME=Francesco Azzola |
Обратите внимание, что в строке 3 группа должна быть равна значению, используемому при регистрации вашего проекта. Почти сделано! Последние два шага — добавление еще gradle.properties
файла gradle.properties
для каждого модуля, который вы хотите опубликовать, и изменение build.gradle
для того же модуля:
1
2
3
|
POM_NAME=Android Weather Library POM_ARTIFACT_ID=weatherlib POM_PACKAGING=aar |
и добавьте в конце build.gradle
эту строку:
1
|
apply from: '../maven_push.gradle' |
Создать ключ подписи
Это важный шаг, потому что ваши файлы должны быть подписаны, прежде чем публиковать их в maven. В OS X вы должны загрузить PGP Tools, которые упростят вашу жизнь. Информация здесь взята из этой ссылки « Как генерировать подписи PGP с помощью Manven ». Первый шаг — создание ключа подписи, запускаемого из командной строки:
gpg –gen-keys
На рисунке ниже показаны все шаги, необходимые для создания ключа:
в конце у вас есть ключ для подписи ваших артефактов. Теперь вы можете перечислить сгенерированные ключи, используя:
gpg –list-keys
и результат показан ниже:
Теперь вам нужно опубликовать свой ключ, чтобы другие разработчики, которые скачивают ваши артефакты, могли проверить подпись:
обратите внимание, что идентификатор ключа должен быть таким же, как показано в списке ключей.
Создайте, подпишите и опубликуйте свой файл в хранилище Staging.
Теперь у вас есть ключ, и вы можете создавать и подписывать свои артефакты. Перед тем, как сделать это, вы должны добавить некоторую информацию, чтобы студия Android могла найти правильный ключ для использования. После этой записи в блоге мы можем добавить файл свойств, называемый gradle.properties
с таким содержанием:
1
2
3
4
5
|
signing.keyId=xxxxxxx signing.password=your_password signing.secretKeyRingFile=file_location nexusUsername=YourSonatypeJiraUsername nexusPassword=YourSonatypeJiraPassword |
В OS X этот файл должен быть добавлен в / Users / your_login. Обратите внимание, что для заполнения значения secretKeyRingFile
вы можете использовать:
gpg –list-secret-keys
Теперь мы можем запустить задачу gradle с помощью консоли gradle в Android-студии:
% GRADLE_HOME% / bin / gradle uploadArchives
В конце концов, если все работает правильно, мы получим:
Проверьте результат
Последний шаг — проверка окончательного результата, чтобы убедиться, что мы опубликовали наши файлы. Давайте откроем наш браузер и перейдем к:
https://oss.sonatype.org/content/repositories/snapshots/
и начните искать свой проект, следуя структуре вашего пакета (то есть com / SurviveWandroid / WeatherLib) и проверьте, есть ли файлы:
Теперь вы можете проверить репозиторий, создав новый проект в Android-студии, и добавить зависимость к новому файлу, который вы только что опубликовали. После того, как вы создали свой проект, вы должны изменить build.gradle в корневом проекте следующим образом:
1
2
3
4
5
6
7
|
allprojects { repositories { mavenCentral() maven { } } |
затем в build.gradle (на уровне модуля) вы добавляете новую зависимость:
1
|
compile 'com.survivingwithandroid:weatherlib:1.2-SNAPSHOT' |
… Если все правильно, новый проект скомпилируется.
Ресурс:
- http://gmariotti.blogspot.co.uk/2013/09/publish-aar-file-to-maven-central-with.html?utm_source=Android+Weekly&utm_campaign=dfb0bc628f-Android_Weekly_71&utm_medium=email&utm_term=0_4eb677ad19-dfb0bc628f-337257141
- http://chris.banes.me/2013/08/27/pushing-aars-to-maven-central/
- https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
- https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
Ссылка: | Руководство по публикации aar to maven с помощью gradle от нашего партнера JCG Франческо Аццолы в блоге Surviving w / Android . |