153 lines
3.7 KiB
Markdown
153 lines
3.7 KiB
Markdown
# Kotlin / Gradle Mirror Setup with Nexus (Air‑Gapped Environment)
|
||
|
||
This document summarizes the steps performed to configure a
|
||
Kotlin/Gradle package mirror using Sonatype Nexus Repository in an
|
||
offline (air‑gapped) Ubuntu server environment. The server already has
|
||
Docker installed and Nexus is accessible via:
|
||
|
||
https://mirror.mahgit.ir/
|
||
|
||
The steps below cover the process from **creating the repository** to
|
||
**testing Gradle builds in the offline environment**.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 2. Create the Repository
|
||
|
||
1. Log in to the Nexus UI:
|
||
|
||
https://mirror.mahgit.ir/
|
||
|
||
2. Navigate to:
|
||
|
||
Administration → Repositories → Create repository
|
||
|
||
3. Select:
|
||
|
||
**maven2 (hosted)**
|
||
|
||
4. Configure the repository:
|
||
|
||
Setting Value
|
||
------------------- ----------------
|
||
Name kotlin-mirror
|
||
Version policy Release
|
||
Layout policy Strict
|
||
Deployment policy Allow redeploy
|
||
|
||
5. Click **Save**.
|
||
|
||
This repository will host Kotlin and Gradle artifacts for the offline
|
||
environment.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 3. Repository URL
|
||
|
||
After creation, the repository is accessible at:
|
||
|
||
https://mirror.mahgit.ir/repository/kotlin-mirror/
|
||
|
||
Example artifact URL:
|
||
|
||
https://mirror.mahgit.ir/repository/kotlin-mirror/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 4. Upload the Artifact
|
||
|
||
Because the server has **no internet access**, artifacts must be
|
||
downloaded externally and uploaded manually.
|
||
|
||
Steps:
|
||
|
||
1. In Nexus UI navigate to:
|
||
|
||
Browse → kotlin-mirror → Upload
|
||
|
||
2. Fill the fields:
|
||
|
||
Field Value
|
||
----------- ----------------------
|
||
Group org.jetbrains.kotlin
|
||
Artifact kotlin-stdlib
|
||
Version 1.9.0
|
||
Packaging jar
|
||
|
||
3. Upload the following files:
|
||
|
||
- kotlin-stdlib-1.9.0.jar
|
||
- kotlin-stdlib-1.9.0.pom
|
||
|
||
4. Click **Upload**.
|
||
|
||
The artifact will now be stored inside the repository.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 5. Test Artifact Download
|
||
|
||
Open the artifact URL in a browser:
|
||
|
||
https://mirror.mahgit.ir/repository/kotlin-mirror/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar
|
||
|
||
If the file downloads successfully, the repository is working correctly.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 6. Configure Gradle to Use the Mirror
|
||
|
||
Modify your Gradle project configuration to use the Nexus mirror instead
|
||
of Maven Central.
|
||
|
||
Example `build.gradle` configuration:
|
||
|
||
``` groovy
|
||
repositories {
|
||
maven {
|
||
url "https://mirror.mahgit.ir/repository/kotlin-mirror/"
|
||
}
|
||
}
|
||
|
||
dependencies {
|
||
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
|
||
}
|
||
```
|
||
|
||
Gradle will now resolve dependencies from the Nexus mirror.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 7. Prepare for Offline Dependency Usage
|
||
|
||
Ensure that all required dependencies are uploaded to Nexus beforehand.\
|
||
For Kotlin projects this may include additional dependencies such as:
|
||
|
||
- kotlin-stdlib-common
|
||
- org.jetbrains.annotations
|
||
|
||
These must also be downloaded externally and uploaded to the mirror.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 8. Test Build in Offline Environment
|
||
|
||
Run the Gradle build on the offline server:
|
||
|
||
``` bash
|
||
gradle build
|
||
```
|
||
|
||
Expected behavior:
|
||
|
||
Gradle resolves dependencies only from the Nexus mirror:
|
||
|
||
Gradle → Nexus Mirror → Local Artifact Storage
|
||
|
||
If the build completes successfully, the mirror setup is functioning
|
||
correctly in the air‑gapped environment.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
End of document.
|