Spring Shell打Jar包时常用小技巧

1、Main-Class

  spring-shell项目打Jar包的一个必要条件就是,指定Main-Class为org.springframework.shell.Bootstrap

  一般情况下,如果想在IDE中直接运行项目,显示在控制台中,也会调用org.springframework.shell.Bootstrap中的Main方法。如下:

import org.springframework.shell.Bootstrap;
import java.io.IOException;

public class HelloApplication {
  public static void main(String[] args) throws IOException {
    Bootstrap.main(args);
  }
}

2、配置读取新xml文件

  spring-shell项目,要求在resource/META-INF/spring目录下,必须有一个spring-shell-plugin.xml文件,打Jar包的时候必须要包括这个文件。

  在IDEA中,Maven项目是会默认扫描resource目录的,但是打成Jar包的时候, 是不会扫描的。我也不知道为什么,只是只是此时最好在pom.xml中配置一下,让它读取这个xml文件:

<resources>
  <resource>
   <directory>src/main/resources</directory>
   <includes>
     <include>**/*.xml</include>
   </includes>
  </resource>
  <resource>
   <directory>src/main/java</directory>
   <includes>
     <include>**/*.xml</include>
   </includes>
  </resource>
</resources>

  PS:src/main/java目录下的xml文件也得读。如果把上面这两个<resource>合并到一起,写成<directory>src/main</directory>,反而是不对的。太奇怪了。

3、打包多个Jar包

  如果项目打Jar包时,需要依赖于另外一个spring-shell的Jar包,可以直接在pom.xml中添加依赖,这样就会把所有的新增的命令合并到一起

<dependencies>
  <dependency>
   <groupId>cn.com.bignzi</groupId>
   <artifactId>dcore</artifactId>
   <version>0.0.1-SNAPSHOT</version>
  </dependency>
  <dependency>
   <groupId>cn.com.bignzi</groupId>
   <artifactId>plugin.data</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</dependencies>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 通过spring用beanshell实现java接口示例

    说明 1.通过脚本语言让JAVA执行动态代码2.用Spring可以将脚本语言代理成Java接口的实现类3.Spring2.5.6中支持三种脚本语言ruby,Groovy,BeanShell4.示例中为spring与beanshell结合5.依赖spring2.5.6,bsh-2.0b4 复制代码 代码如下: import org.junit.Test;import org.springframework.scripting.bsh.BshScriptUtils; import bsh.EvalE

  • 详解spring boot 以jar的方式启动常用shell脚本

    用spring boot框架做的项目,将第三方包全部打在jar里面,通过shell脚本启动和停止服务,常用的shell脚本模板如下: #!/bin/bash JAVA_OPTIONS_INITIAL=-Xms128M JAVA_OPTIONS_MAX=-Xmx512M _JAR_KEYWORDS=monitor-alarm-task-1.0-SNAPSHOT.jar APP_NAME=monitor-alarm-task APPLICATION_FILE=/opt/scpip_monitor/a

  • Spring Shell应用程序开发流程解析

    向shell提供命令非常简单,需要学习的注解很少.该命令的实现风格与使用依赖注入的应用程序的开发类相同,您可以利用Spring容器的所有特性来实现您的命令类. spring-shell官网地址:https://projects.spring.io/spring-shell/  标记接口 创建命令的第一步是实现标记接口CommandMarker,并使用Spring的@Component注解对类进行注解(注意一个JIRA问题:提供@CliCommand元注解避免使用标记接口).使用helloworl

  • Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

    废话不多说了,先给大家上代码,具体代码如下所示: #!/bin/bash cd `dirname $0` CUR_SHELL_DIR=`pwd` CUR_SHELL_NAME=`basename ${BASH_SOURCE}` #修改这里jar包名即可 JAR_NAME="xxxxxxxxxxxx.jar" JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME #JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:Pe

  • Spring Boot调用 Shell 脚本实现看门狗功能

    需要实现看门狗功能,定时检测另外一个程序是否在运行,使用 crontab 仅可以实现检测程序是否正在运行,无法做到扩展,如:手动重启.程序升级(如果只需要实现自动升级功能可以使用 inotify)等功能:最后决定使用 Spring Boot 调用 Shell 脚本来实现 一.脚本 1.1 启动脚本 #!/bin/bash ps -ef | grep "demo-app-0.0.1-SNAPSHOT.jar" | grep -v "grep" if [ "$

  • springboot打包不同环境配置以及shell脚本部署的方法

    前言 本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_publish.sh启动程序 profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 通过a

  • 通过Spring Shell 开发 Java 命令行应用

    提到 Java,大家都会想到 Java 在服务器端应用开发中的使用.实际上,Java 在命令行应用的开发中也有一席之地.在很多情况下,相对于图形用户界面来说,命令行界面响应速度快,所占用的系统资源少.在与用户进行交互的场景比较单一时,命令行界面是更好的选择.命令行界面有其固定的交互模式.通常是由用户输入一系列的参数,在执行之后把相应的结果在控制台输出.命令行应用通常需要处理输入参数的传递和验证.输出结果的格式化等任务.Spring Shell 可以帮助简化这些常见的任务,让开发人员专注于实现应用

  • Spring Shell打Jar包时常用小技巧

    1.Main-Class spring-shell项目打Jar包的一个必要条件就是,指定Main-Class为org.springframework.shell.Bootstrap 一般情况下,如果想在IDE中直接运行项目,显示在控制台中,也会调用org.springframework.shell.Bootstrap中的Main方法.如下: import org.springframework.shell.Bootstrap; import java.io.IOException; public

  • Spring打包jar包时jsp页面无法访问问题解决

    spring打包jar包时jsp页面无法访问 问题如下 当前pom.xml配置 <build> <resources> <!--引入配置文件--> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> </resource> <!--引入静态文件--> <resource&

  • 基于Spring中各个jar包的作用及依赖(详解)

    先附spring各版本jar包下载链接http://repo.spring.io/release/org/springframework/spring/ spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2.jar 示例图片为Spring-2.5.6.jar的包目录 下面讲解各个jar包的作用: 1.org.springframework.aop或sp

  • 在启动后台 jar包时,使用指定的 application.yml操作

    jar 包启动时指定配置文件 application.yml nohup java -jar vPaas.jar --spring.config.location=/opt/vpaas-conf/application.yml > /opt/vpaas-conf/nohup.out 2>&1 & 如果不喜欢将 application.properties 作为配置文件名,你可以通过指 定 spring.config.name 环境属性来切换其他的名称,也可以使 用 spring

  • Spring Boot打jar包后配置文件的外部优化配置方法

    在未进行任何处理的情况下,Spring Boot会默认使用项目中的 application.properties 或者 application.yml 来读取项目所需配置. 我这里只记录几种自己所用到的. 访问命令行属性 在默认的情况下, SpringApplication 会将任何命令行选项参数(以 - 开头 --server.port=9000)转换为 property 并添加到Spring环境当中. 例如,启动项目的时候指定端口: java -jar analysis-speech-too

  • Spring boot 打jar包分离lib的正确配置方式

    前言 Springboot 打jar包分离lib,配置文件的方式,网上可以搜到的我都没试通.跟刘大神(大神没有博客,很可惜)讨论后,给出了这么一个解决方案,供大家参考. 部署环境 window 10 redhat 6.4 其他版本没有尝试,应该也是可以的 POM.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.

  • spring打包到jar包的问题解决

    今天把spring打包到一个jar包中,jar运行时抛异常 Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 5 in XML document from class path resource [spring.xml] is invalid; nested exception is org.xml.sax.SAXParseExce

  • Java在制作jar包时引用第三方jar包的方法

    我用的是Eclipse打包,但在CMD窗口执行的时候报"ActiveMQ.jar中没有主清单属性"错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利用好压打开jar包,果然如此.里面只有一行 Manifest-Version: 1.0 需添加Main-Class.在本例中,添加如下: Main-Class: com.luoluo.TestUse.activemq.ActiveMQStateMain 上面,有几点需要注意: 1. Mai

  • spring通过导入jar包和配置xml文件启动的步骤详解

    第一步,进到 spring仓库下载一个spring包,大家前往官网下载的时候,记得下载dist.zip后缀的包,里面包括了jar包和对应的英文文档. 下面是自己已经下载的一个,提供百度云链接: 百度云,提取码:hpst 第二步,打开idea -> File -> Project Structrure -> Libraries,点击上面的 "+"号,找到存放spring源码的目录,进入libs目录,然后将 beans.context.core.expression.jc

  • Javascript常用小技巧汇总

    本文实例讲述了Javascript常用小技巧.分享给大家供大家参考.具体分析如下: 一.True 和 False 布尔表达式 下面的布尔表达式都返回 false: null undefined '' 空字符串 0 数字0 但小心下面的, 可都返回 true: '0' 字符串0 [] 空数组 {} 空对象 下面段比较糟糕的代码: 复制代码 代码如下: while (x != null) { 你可以直接写成下面的形式(只要你希望 x 不是 0 和空字符串, 和 false): 复制代码 代码如下:

随机推荐