рдЬрд╛рд╡рд╛ 14 рд╕реЗ рдЬреЗрдкреАрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди

рдирдорд╕реНрдХрд╛рд░!

рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдирдпрд╛ рдЬрд╛рд╡рд╛ 14 рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмреАрдЪ, рдореБрдЭреЗ рдПрдХ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдерд╛ рдЬреЕрдХрдкреЗрдЬ рдкреИрдХрд░ (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░ рдореЗрдВ)ред

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрд░реНрде рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди, рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЛ рд▓реЗрдирд╛ рд╣реИ, рдФрд░ рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЪрд▓рд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд▓реЗрдЦ рдореЗрдВ рд╣реИ ред

рдкреИрдХрд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдкрдиреЗ рдкрд╛рд▓рддреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛редрдЪреВрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреА рдЧрдИ рдереА, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдЬрдм рдореИрдВ рдорд╛рд╡реЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдХрд╛рд░реНрдп рдореЗрд░реЗ рд▓рд┐рдП рджреЛрдЧреБрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЧреБрдЧрд▓реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛: рдореБрдЭреЗ рдПрдмреНрд╕реНрдЯреНрд░реЙрдордЬреЛ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ , рд╢реВрдиреНрдп рдирд┐рд╖реНрдкрд╛рджрди () рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ , рдореЛрдЬреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛, рдФрд░ рдкреНрд▓рдЧрдЗрди рддреИрдпрд╛рд░ рдерд╛ред

рдкрд░рд┐рдгрд╛рдо рдРрд╕рд╛ рдЦрд╛рд▓реА рд╣реИ:

@Mojo(name = "createpackage", defaultPhase = LifecyclePhase.VERIFY, threadSafe =true)
public class JpackageMojo extends AbstractMojo {

   @Override
   public void execute() {
        //    .
   }
}

"рдХреНрд░рд┐рдпреЗрдЯреЗрдкреИрдХреЗрдЬ" рд▓рдХреНрд╖реНрдп рдХрд╛ рдирд╛рдо рд╣реИ;
"LifecyclePhase.VERIFY" - рд╕рддреНрдпрд╛рдкрди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

.Exe рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:

jpackage --name myapp --input lib --main-jar main.jar

рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде dzharnik рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

@Parameter(defaultValue = "${project.build.directory}")
private File buildDirectory;
@Parameter( defaultValue = "${project}", readonly = true )
private MavenProject project;

рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдХрд░рдг java.util.spi.ToolProvider.findFirst ("jpackage") рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ , рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрдирдХреНрдпреВрдмреЗрдЯрд░ рдореЗрдВ рдЬрдВрдкреЗрдЬ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕рдорд╛рдзрд╛рди рдкрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдареАрдХ рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ Runtime.getRimeime ()ред Exec (рдХрдорд╛рдВрдб) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдмрджрд╕реВрд░рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВрдЧреЗред рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ jpackage.exe рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдореА рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

jpackage.exe --name name --input path --main-jar main --dest dest --win-menu --win-shortcut

рдЬрд╣рд╛рдБ рдХреБрдЫ рдФрд░ рдЭрдВрдбреЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ: - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рднрд╛рдЧреНрдп рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, --рд╡рд┐рди-рдореЗрдиреВ --рд╡рд┐рди-рд╢реЙрд░реНрдЯрдХрдЯ рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдореЗрд░реЗ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рд╛:

@Mojo(name = "createpackage", defaultPhase = LifecyclePhase.VERIFY, threadSafe = true)
public class JpackageMojo extends AbstractMojo {

   public static final String ERROR_CREATE_PACKAGE = "Error create package";

   @Parameter(defaultValue = "${project.build.directory}")
   private File buildDirectory;
   @Parameter( defaultValue = "${project}", readonly = true )
   private MavenProject project;

   @Override
   public void execute() {
       var name = project.getArtifactId();
       var path = buildDirectory.getPath();
       var main = project.getArtifact().getFile().getName();
       var dest = path + "\\dest";
       try {
           String command  = "jpackage.exe --name " + name + " --input "
                   + path + " --main-jar " + main + " --dest " + dest
                   + " --win-menu --win-shortcut";
           getLog().debug(command);
           Process proc = Runtime.getRuntime().exec(command);
           getLog().info(Arrays.toString(proc.getInputStream().readAllBytes()));
           proc.waitFor();
           proc.destroy();
       } catch (IOException e) {
           getLog().error(ERROR_CREATE_PACKAGE, e);
       } catch (InterruptedException e) {
           getLog().error(ERROR_CREATE_PACKAGE, e);
           Thread.currentThread().interrupt();
       }
   }
}

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЖрдк pom.xml рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
<plugin>
   <groupId>org.sterzhen</groupId>
   <artifactId>jpackage-maven-plugin</artifactId>
   <version>1.0-SNAPSHOT</version>
   <executions>
       <execution>
           <goals>
               <goal>createpackage</goal>
           </goals>
       </execution>
   </executions>
</plugin>

рдПрдХ рдкрд╛рд▓рддреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдереА, рдЕрд░реНрдерд╛рддреН, рдкреИрдХрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рдИрдПрдХреНрд╕ 3.0 рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╡рд╛рдИрдПрдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд▓рдЧрдЗрди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯреА рдЬреАрдд рдХреА рдЦреБрд╢реА рджреАред рд╣рд╛рдВ, рдЬрдмрдХрд┐ рдпрд╣ рдЖрджрд┐рдо рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рд╣реИред

рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рд▓реЗрдЦрди:

http://openjdk.java.net/jeps/343
https://docs.oracle.com/en/java/javase/14/docs/specs/man/jpackage.html
https://docs.oracleред com / en / java / javase / 14 / jpackage / рдкреИрдХреЗрдЬрд┐рдВрдЧ-рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди .htm

рдзрдиреНрдпрд╡рд╛рдж!

All Articles