maven assembly打包生成Java应用启动脚本bat和sh的方法

Maven是一个流行的Java项目管理和构建工具,它可以自动处理依赖关系和构建过程。 Maven Assembly插件提供了将Java应用程序打包成一个可执行的JAR文件并创建用于启动应用程序的脚本的功能。本教程将介绍如何使用Maven Assembly插件打包Java应用程序并生成启动脚本。

安装Maven

首先,您需要安装Maven。您可以从Maven官方网站下载jar包,然后解压缩到您的本地文件夹中。接下来,将Maven的bin目录添加到您的系统路径中。

配置Maven项目

在您的Maven项目的pom.xml文件中添加以下插件配置:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.example.MainClass</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <appendAssemblyId>false</appendAssemblyId>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

在这个配置文件中,我们将使用maven-assembly-plugin插件。我们使用descriptorRefs指定生成JAR文件和依赖的lib文件夹,并将appendAssemblyId设置为false,以避免生成带有带有“with-dependencies”后缀的文件。

在“archive”中指定manifest和mainClass的名称。这里,我们将“com.example.MainClass”指定为应用程序的主要类。在“execution”中指定需要生成脚本的时间。

打包应用程序并生成脚本

在完成配置后,您需要运行以下命令:

mvn clean package

这将生成包含所有依赖项和JAR文件的目录。然后执行以下命令:

mvn assembly:single

这将生成一个可执行的JAR文件和两个启动脚本:

  • start.bat:用于Windows系统
  • start.sh:用于Linux和Mac系统

您可以使用这些脚本启动您的Java应用程序。

示例1

假设您的Java应用程序在com.example.MainClass类中。以下是您的项目结构:

myproject
├── pom.xml
├── src
│   └── main
│       └── java
│           └── com
│               └── example
│                   └── MainClass.java

在pom.xml文件中添加上述Maven配置,并在命令行中运行以下命令:

mvn clean package
mvn assembly:single

这将生成myproject/target/myproject-jar-with-dependencies.jar文件,以及start.bat和start.sh启动脚本文件。

示例2

假设您将在项目中使用Spring Boot。这是您的项目结构:

myproject
├── pom.xml
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── example
│       │           └── MySpringBootApplication.java
│       └── resources
│           ├── application.properties
│           └── static
│               └── index.html

在pom.xml文件中,您需要添加Spring Boot插件配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.example.MySpringBootApplication</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <appendAssemblyId>false</appendAssemblyId>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

然后,运行以下命令:

mvn clean package
mvn assembly:single

这将在myproject/target/myproject-jar-with-dependencies.jar中生成您的应用程序,并生成start.bat和start.sh启动脚本文件。

通过这个教程,您了解了如何使用Maven Assembly插件打包Java应用程序并生成启动脚本。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:maven assembly打包生成Java应用启动脚本bat和sh的方法 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 解决spring-boot 打成jar包后 启动时指定参数无效的问题

    当使用Spring Boot打成JAR包后,有时候需要在启动时指定参数来配置应用程序。但是有时候会遇到启动时指定的参数无效的问题,这时候需要按照以下步骤来解决这个问题: 1.在application.properties文件中配置参数 Spring Boot的配置文件默认是application.properties,我们可以在这个文件中配置应用程序需要的参…

    Java 2023年5月19日
    00
  • java生成json实现隐藏掉关键属性

    生成 JSON 格式字符串通常使用的是 JSON 序列化器,Java 中最常用的序列化器是 Jackson。要隐藏关键属性,我们可以使用 Jackson 提供的注解 @JsonIgnore,该注解可以标记某个属性在序列化时不进行序列化。 下面是完整的攻略步骤: 步骤一:导入依赖 在 pom.xml 文件中导入 Jackson 相关的依赖。 <depen…

    Java 2023年5月26日
    00
  • Java开发过程中关于异常处理的详解

    Java开发过程中关于异常处理的详解 在Java开发中,异常处理是非常重要的一个环节。良好的异常处理可以提高代码质量,让程序更加健壮和稳定。本文将会从以下几个方面详细讲解Java开发过程中关于异常处理的相关知识。 1. 什么是Java异常 Java异常指的是在程序运行过程中出现的错误情况,这些错误情况可能会导致程序崩溃或产生不正确的结果。Java异常可以分为…

    Java 2023年5月27日
    00
  • mybatis plus实体类中字段映射mysql中的json格式方式

    下面是关于如何使用MybatisPlus实体类中字段映射MySQL中JSON格式的完整攻略。 1. 引入依赖 在pom.xml中加入以下依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter&l…

    Java 2023年5月26日
    00
  • JDBC连接MySQL数据库批量插入数据过程详解

    本文将提供一份关于JDBC连接MySQL数据库批量插入数据的完整攻略,下面是具体的步骤。 步骤一:导入MySQL JDBC驱动 在JDBC连接MySQL数据库之前,应首先下载MySQL JDBC驱动程序并将其导入到项目中。这可以通过以下步骤完成: 前往MySQL官网下载MySQL JDBC驱动程序。 解压下载的tar.gz或zip文件。 复制mysql-co…

    Java 2023年5月20日
    00
  • JSP技术实现动态页面到静态页面的方法

    JSP(JavaServer Pages)是一种基于Java的Web开发技术,可以将动态代码嵌入HTML页面中。而将JSP页面转换为静态页面主要是为了提高页面的访问速度和减少服务器的压力。以下是实现JSP页面转换为静态页面的完整攻略: 步骤一:创建JSP页面 首先,需要创建一个JSP页面,该页面执行动态页面的功能。创建JSP页面的过程类似于创建一个HTML页…

    Java 2023年6月15日
    00
  • 用 ChatGPT 写代码,效率杠杠的!

    来源:https://www.cnblogs.com/scy251147/p/17242557.html ChatGPT出来好久了,vscode上面由于集成了相关的插件,所以用起来很简单,经过本人深度使用后,发觉其能力的强大之处,在书写单元测试,书写可视化小工具,代码纠错,代码规范,编程辅助方面,极其可靠,而且能识别一些坑并绕过,下面来看看他能干的一些事情吧…

    Java 2023年4月30日
    00
  • 简单谈谈Java中String类型的参数传递问题

    关于Java中String类型的参数传递问题,我们从以下几个方面逐一展开讲解。 1. Java中的参数传递方式 Java中引用类型的参数传递是值传递的一种特殊形式。值传递是指将实际参数的值复制一份传递给函数,函数接收到的是实参值的一个副本,而不是实参值的引用。Java中对引用类型做值传递时其实是复制了一份引用,即一个指针类型的值传递到了方法中,引用的对象并没…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部