1{
2 jdk,
3 jre,
4 pkgs,
5}:
6
7# 'Hello world' Java application derivation for use in tests
8let
9 source = pkgs.writeTextDir "src/Hello.java" ''
10 import java.util.logging.Logger;
11 import java.util.logging.Level;
12
13 class Hello {
14 static Logger logger = Logger.getLogger(Hello.class.getName());
15
16 public static void main(String[] args) {
17 logger.log(Level.INFO, "Hello, world!");
18 }
19 }
20 '';
21in
22pkgs.stdenv.mkDerivation {
23 pname = "hello";
24 version = "1.0.0";
25
26 src = source;
27
28 buildPhase = ''
29 runHook preBuild
30 ${jdk}/bin/javac src/Hello.java
31 runHook postBuild
32 '';
33 installPhase = ''
34 runHook preInstall
35
36 mkdir -p $out/lib
37 cp src/Hello.class $out/lib
38
39 mkdir -p $out/bin
40 cat >$out/bin/hello <<EOF;
41 #!/usr/bin/env sh
42 ${jre}/bin/java -cp $out/lib Hello
43 EOF
44 chmod a+x $out/bin/hello
45
46 runHook postInstall
47 '';
48}