背景
工作需要,做一个小的工具类,实现从日志中提取一些信息,时间短,没时间研究脚本语言了,就之际而用java写了个小方法,然后准备打jar包,使用命令完成提取日志信息;
主要流程
1.java代码比较简单,就创建了一个maven空项目,写了工具类方法,包含main方法,通过System.getPropery获取命令行中对应参数。
2.注意jdk版本和pom中打包插件的使用
因为是非springboot项目,直接用 org.apache.maven.plugins打包插件,如果引用到了第三方包,比如我用到了hutool,那还需要将第三方包打入到jar中,这就使用到了maven-shade-plugin,我的jdk是1.8,用到的插件版本如下:
对应需要配置jar的主方法入口,这个也需要在META-INF里的MANIFEST.MF文件中定义,具体操作见常用问题;
注意项目的默认jdk版本要和maven jdk版本一直,否则会报java 运行版本不同的错误
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.TextSubStringTrans</mainClass> <!-- 此处为主入口-->
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.TextSubStringTrans</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
3.打jar包,先clean,再install 成功后会在项目 target路径下生成jar包,jar包默认命名为pom中定义的artifactId+version。
4、脚本命令为:
java -Dpath=D:\projects\xx.serverlog -Dtype=1 -jar GidTool-1.0.jar
其中-D+参数名,代表入参名,在具体代码中使用System.getPropery获取参数值,见第一步。
5.在对应jar路径下,使用powershell,书写命令,执行,即可完成工具的使用,很简单。
常遇到的问题
1.比如运行jar的时候,没有注清单属性这种,可以通过idea配置
步骤一:点击左上角 File --> Project Structure
步骤二:弹出新窗口后点击Artifacts-"+"号-JAR-From module with dependenceis…
步骤三:弹出新窗口后点击Main Class右边文件夹图标,选择主方法类,也就是我这个项目中的TextSubStringTrans类
步骤四:选完后点击Directory for META-INF/MANIFEST.MF右边的文件夹图标- 选择自己项目的根路径-OK
步骤五:回到上一层级,查看是否配置对,然后点OK
这样就在项目跟路径下生成对应的MF文件了