Skip to content

Commit 178eca7

Browse files
authored
Merge pull request #60 from yma96/main
Update README
2 parents 564a995 + 74e9220 commit 178eca7

File tree

1 file changed

+56
-49
lines changed

1 file changed

+56
-49
lines changed

README.md

Lines changed: 56 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,80 @@
1-
# indy-archive-service project
1+
# Indy Archive Service
22

3-
This project uses Quarkus, the Supersonic Subatomic Java Framework.
3+
Archive service for Indy artifact repository manager - caches build dependencies as local archives to accelerate similar future builds.
44

5-
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
5+
## Overview
66

7-
## Running the application in dev mode
7+
The Indy Archive Service cooperates with the sidecar that enhances build performance by creating local archives of build dependencies during the build process. These archives serve as cached dependency sets that can significantly accelerate subsequent builds with similar dependency requirements.
88

9-
You can run your application in dev mode that enables live coding using:
10-
```shell script
11-
./mvnw compile quarkus:dev
12-
```
9+
Unlike traditional artifact repository archiving, this service focuses on build-time optimization rather than long-term storage management. It works in conjunction with the Indy Sidecar framework to provide intelligent dependency caching and retrieval mechanisms.
1310

14-
> **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
11+
## Key Problems Solved
1512

16-
## Packaging and running the application
13+
### Build Performance Optimization
1714

18-
The application can be packaged using:
19-
```shell script
20-
./mvnw package
21-
```
22-
It produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory.
23-
Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory.
15+
Issue: Builds spend significant time downloading dependencies from remote repositories
2416

25-
If you want to build an _über-jar_, execute the following command:
26-
```shell script
27-
./mvnw package -Dquarkus.package.type=uber-jar
28-
```
17+
Solution: Cache dependency sets locally as archives for rapid retrieval in similar builds
2918

30-
The application is now runnable using `java -jar target/quarkus-app/quarkus-run.jar`.
19+
### Network Dependency Reduction
3120

32-
## Creating a native executable
21+
Issue: Builds are vulnerable to network issues and remote repository outages
3322

34-
You can create a native executable using:
35-
```shell script
36-
./mvnw package -Pnative
37-
```
23+
Solution: Local archive caches reduce dependency on external network connectivity
3824

39-
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
40-
```shell script
41-
./mvnw package -Pnative -Dquarkus.native.container-build=true
42-
```
25+
### Bandwidth Optimization
26+
27+
Issue: Repeated downloads of the same dependencies consume network bandwidth
28+
29+
Solution: Single download, multiple reuse through archive caching
30+
31+
## Features
32+
33+
### Dependency Archiving
4334

44-
You can then execute your native executable with: `./target/indy-archive-service-1.0.0-SNAPSHOT-runner`
35+
Build-Time Archiving: Automatically creates dependency archives during successful builds
4536

46-
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.html.
37+
Smart Packaging: Packages all resolved dependencies into optimized archive formats
4738

48-
## Related guides
39+
### Archive Management
4940

50-
- Infinispan Client ([guide](https://quarkus.io/guides/infinispan-client)): Connect to the Infinispan data grid for distributed caching
51-
- REST Client ([guide](https://quarkus.io/guides/rest-client)): Call REST services
52-
- RESTEasy Mutiny ([guide](https://quarkus.io/guides/getting-started-reactive#mutiny)): Mutiny support for RESTEasy server
53-
- YAML Configuration ([guide](https://quarkus.io/guides/config#yaml)): Use YAML to configure your Quarkus application
54-
- RESTEasy JAX-RS ([guide](https://quarkus.io/guides/rest-json)): REST endpoint framework implementing JAX-RS and more
55-
- SmallRye Health ([guide](https://quarkus.io/guides/microprofile-health)): Monitor service health
56-
- Reactive PostgreSQL client ([guide](https://quarkus.io/guides/reactive-sql-clients)): Connect to the PostgreSQL database using the reactive pattern
57-
- Cache ([guide](https://quarkus.io/guides/cache)): Enable application data caching in CDI beans
41+
Archive Indexing: Maintains searchable index of available dependency archives
5842

59-
## Provided examples
43+
Archive Contents Validation: Validates archive contents integrity and validity
6044

61-
### YAML Config example
45+
Storage Optimization: Efficiently stores archives with compression and deduplication
6246

63-
This Supersonic example displays mach speed in your favourite unit, depending on the specified Quarkus configuration.
47+
## Sidecar / Archive Integration Architecture Overview
6448

65-
[Related guide section...](https://quarkus.io/guides/config-reference#configuration-examples)
49+
Build Process ◄──▶ Indy Sidecar ◄──▶ Indy / Archive Service (LFS)
50+
51+
## Integration Workflow
52+
53+
Build Initiation: Build process sends dependency requirements to Indy Sidecar
54+
55+
Routing Decision: Sidecar routes request based on archive availability
56+
57+
Archive Path: If suitable archive content exists → Archive Service provides cached dependencies
58+
59+
Traditional Path: If no archive content exists → Indy Core resolves dependencies traditionally
60+
61+
## Build & Deploy
62+
63+
### dev mode
64+
65+
```shell script
66+
./mvnw compile quarkus:dev
67+
```
68+
69+
### native executable
70+
71+
```shell script
72+
./mvnw package -Pnative -Dquarkus.native.container-build=true
73+
```
6674

67-
The Quarkus configuration location is `src/main/resources/application.yml`.
75+
## Related Projects
6876

69-
### RESTEasy JAX-RS example
77+
[Indy](https://github.com/Commonjava/indy)
7078

71-
REST is easy peasy with this Hello World RESTEasy resource.
79+
[Indy Sidecar](https://github.com/Commonjava/indy-sidecar)
7280

73-
[Related guide section...](https://quarkus.io/guides/getting-started#the-jax-rs-resources)

0 commit comments

Comments
 (0)