doc: include stripJavaArchivesHook in the java section

This commit is contained in:
TomaSajt 2024-03-17 18:52:03 +01:00
parent 63ddc7bc00
commit e08f26cdb1
No known key found for this signature in database
GPG key ID: F011163C050122A1

View file

@ -4,12 +4,31 @@ Ant-based Java packages are typically built from source as follows:
```nix
stdenv.mkDerivation {
name = "...";
pname = "...";
version = "...";
src = fetchurl { ... };
nativeBuildInputs = [ jdk ant ];
nativeBuildInputs = [
ant
jdk
stripJavaArchivesHook # removes timestamp metadata from jar files
];
buildPhase = "ant";
buildPhase = ''
runHook preBuild
ant # build the project using ant
runHook postBuild
'';
installPhase = ''
runHook preInstall
# copy generated jar file(s) to an appropriate location in $out
install -Dm644 build/foo.jar $out/share/java/foo.jar
runHook postInstall
'';
}
```
@ -17,6 +36,10 @@ Note that `jdk` is an alias for the OpenJDK (self-built where available,
or pre-built via Zulu). Platforms with OpenJDK not (yet) in Nixpkgs
(`Aarch32`, `Aarch64`) point to the (unfree) `oraclejdk`.
Also note that not using `stripJavaArchivesHook` will likely cause the
generated `.jar` files to be non-deterministic, which is not optimal.
Using it, however, does not always guarantee reproducibility.
JAR files that are intended to be used by other packages should be
installed in `$out/share/java`. JDKs have a stdenv setup hook that add
any JARs in the `share/java` directories of the build inputs to the