Я бился головой об этой проблеме уже несколько дней.
Моя ситуация такова:
У меня есть SDK, написанный мной, который использует две зависимости, размещенные в частном репозитории maven, доступ к которому возможен только через логин
- repo-1 на S3 maven
- repo-2 на Nexus
Этот SDK всегда использовался в моем приложении для Android (но рассматривался как субмодуль) в проекте.
Внутри Gradle проекта есть 2 репозитория maven, из которых можно найти две упомянутые выше частные зависимости.
maven {
name “repo-1”
url "s3://repo-1/maven"
credentials(AwsCredentials) {
accessKey awsUsername
secretKey awsPassword
}
}
maven {
name “repo-2”
url "http://repo-2/repository/maven-releases"
credentials {
username ‘repo-2-name’
password ‘repo-2-password’
}
}
- Упомянутая выше зависимость 2 используется ТОЛЬКО sdk, приложение полностью об этом не знает
Теперь я хочу полностью разделить две вещи и разместить SDK в моем личном репозитории maven, чтобы скрыть весь код и зависимости, связанные с SDK, из приложения.
Сначала я хочу сделать все локально, чтобы я мог быстрее выполнять разные тесты.
Поэтому я «загрузил» свой SDK в моем местном maven.
В POM, который я сгенерировал, у меня есть все необходимые зависимости от SDK (включая 2 зависимости частных репозиториев), например:
<packaging>aar</packaging>
<dependencies>
<dependency>
<artifactId>repo-1</artifactId>
<groupId>com.repo-1.android</groupId>
<version>0.0.1</version>
</dependency>
<dependency>
<artifactId>repo-2</artifactId>
<groupId>com.repo-2.android</groupId>
<version>1.0.0</version>
</dependency>
и, кроме того, я также добавил 2 репозитория, из которых необходимо загрузить 2 частные зависимости:
<repositories>
<repository>
<id>repo-1</id>
<name>repository-1</name>
<url>http://repo-1/repository/maven-releases</url>
</repository>
<repository>
<id>repo-2</id>
<name>repository-2</name>
<url>s3://repo-1/maven</url>
</repository>
</repositories>
Затем я установил файл settings.xml в корне моего локального maven (../.m2) с учетными данными для доступа к 2 репозиториям.
<settings
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>repo-1</id>
<username>awsPassword</username>
<password>awsPassword</password>
</server>
<server>
<id>repo-2</id>
<username>repo-2-name</username>
<password>repo-2-password</password>
</server>
</servers>
</settings>
Затем я добавил свой sdk как зависимость в приложение, но не хочу загружать 2 зависимости из частных репозиториев.
НО
Однако, если я добавлю два репозитория maven в gradle проекта приложения (как в первом примере), это сработает, поэтому я почти уверен, что это проблема pom и setting.xml конфигурации.
Большое спасибо всем за ответы