summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorPol Dellaiera <pol.dellaiera@protonmail.com>2024-03-19 05:41:08 +0100
committerGitHub <noreply@github.com>2024-03-19 05:41:08 +0100
commit186c3e34a76f6170e01dcd41f25dee8c2c61c7f3 (patch)
tree64138e8f3524348a7eca700621966e944062eaca /doc
parentced4e31b4a3a96ca7805546c1ffa03f730a356df (diff)
parente08f26cdb1e23f47821c32de2d03f8d114289bc0 (diff)
Merge pull request #296549 from TomaSajt/strip-java-archives-hook
add stripJavaArchivesHook and use treewide
Diffstat (limited to 'doc')
-rw-r--r--doc/languages-frameworks/java.section.md29
1 files changed, 26 insertions, 3 deletions
diff --git a/doc/languages-frameworks/java.section.md b/doc/languages-frameworks/java.section.md
index 371bdf6323fb..0ce1442cca68 100644
--- a/doc/languages-frameworks/java.section.md
+++ b/doc/languages-frameworks/java.section.md
@@ -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 = ''
+ runHook preBuild
+ ant # build the project using ant
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
- buildPhase = "ant";
+ # 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