<commit_before>= Srcdeps

ifdef::env-github[]
[link=https://travis-ci.org/l2x6/srcdeps]
image:https://travis-ci.org/l2x6/srcdeps.svg?branch=master["Build Status", link="https://travis-ci.org/l2x6/srcdeps-maven-plugin"]
endif::[]

A set of tools for building dependencies from their sources during the build.

= What is this good for?

Srcdeps alleviates some of the pains that arise from implementing Continuous Delivery in Maven projects. With srcdeps,
a module can depend on a specific revision of another module. For instance, a module `web-banking-frontend` could
depend on `account-balance-microservice` at git revision `abc123`, without requiring the
`account-balance-microservice` to perform a complete Maven release.


== Srcdeps support for Maven

Currently, the srcdeps toolkit supports only Maven 3.3.1+, although the `srcdeps-core` library has an ambition to be
generic enough so that a support for other Java build tools such as Gradle or sbt can be added (contributions are welcome!).

The present solution for Maven is leveraging the concept of Maven Core Extensions introduced in Maven 3.3.1.
In particular, we provide an implementation of `LocalRepositoryManager` that delegates all the usual artifact
lookup work to the standard local repository manager available in Maven class path, but it is watching carefully,
if the requested artifact contains `-SRC-` in its version string. For such ones, the `srcdeps-core` library is
called, to build what is necessary and install it to the Maven local repository. In other words, the dependencies
are built and installed while they are looked up.

=== How to configure for Maven:

==== 1. `.mvn/extensions.xml`
<commit_msg>Adapt the README after spliting the code into Core and Maven components<commit_after>= Srcdeps Maven

ifdef::env-github[]
[link=https://travis-ci.org/srcdeps/srcdeps-maven]
image:https://travis-ci.org/srcdeps/srcdeps-maven.svg?branch=master["Build Status", link="https://travis-ci.org/srcdeps/srcdeps-maven"]
endif::[]

A Maven Core Extension for building dependencies from their sources during the build.

= What is this good for?

Srcdeps alleviates some of the pains that arise from implementing Continuous Delivery in Maven projects. With srcdeps,
a module can depend on a specific revision of another module. For instance, a module `web-banking-frontend` could
depend on `account-balance-microservice` at git revision `abc123`, without requiring the
`account-balance-microservice` to perform a complete Maven release.


== Srcdeps support for Maven

Currently, the srcdeps toolkit supports only Maven 3.3.1+, although the
link:https://github.com/srcdeps/srcdeps-core[Srcdeps Core]
library has an ambition to be generic enough so that a support for other Java build tools such as Gradle or sbt can be
added (contributions are welcome!).

The present solution for Maven is leveraging the concept of Maven Core Extensions introduced in Maven 3.3.1.
In particular, we provide an implementation of `LocalRepositoryManager` that delegates all the usual artifact
lookup work to the standard local repository manager available in Maven class path, but it is watching carefully,
if the requested artifact contains `-SRC-` in its version string. For such ones, the `srcdeps-core` library is
called, to build what is necessary and install it to the Maven local repository. In other words, the dependencies
are built and installed while they are looked up.

=== How to configure for Maven:

==== 1. `.mvn/extensions.xml`

{'fraction_non_alphanumeric': 0.07261292166952545, 'fraction_numerical': 0.007432818753573471, 'mean_word_length': 4.950680272108843, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 7, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5026839', 'n_tokens_mistral': 988, 'n_tokens_neox': 945, 'n_words': 455}