Currently, the modules driver, ingestor-default and shared and testutils are not published to maven, because their API should not be public and backwards-compatibility within a major version is not guaranteed.
The disadvantage is that the main executable jar is not published on maven. However, the main jar should be available to download without the user having to build it himself.
Both goals can be achieved by publishing all modules to maven central, but making all classes in driver, ingestor-default, shared and testutils package-private to za.co.absa.hyperdrive which effectively marks them as a "private API". Users may download the main jar and execute it as is, but will still be prevented to use the code (unless they create a package with the same name)
Tasks
- From the mentioned modules, remove the following from the pom files
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${nexus.staging.plugin.version}</version>
<configuration>
<skipNexusStagingDeployMojo>${skip.internal.modules.deployment}</skipNexusStagingDeployMojo>
</configuration>
</plugin>
- Make all classes in the mentioned modules package private to
za.co.absa.hyperdrive
Currently, the modules
driver,ingestor-defaultandsharedandtestutilsare not published to maven, because their API should not be public and backwards-compatibility within a major version is not guaranteed.The disadvantage is that the main executable jar is not published on maven. However, the main jar should be available to download without the user having to build it himself.
Both goals can be achieved by publishing all modules to maven central, but making all classes in
driver,ingestor-default,sharedandtestutilspackage-private toza.co.absa.hyperdrivewhich effectively marks them as a "private API". Users may download the main jar and execute it as is, but will still be prevented to use the code (unless they create a package with the same name)Tasks
za.co.absa.hyperdrive