[Java 接口自动化框架]-优化篇03

 需求:需要把接口自动化框架的加解密部分通过jar执行

遇到问题:发现很多配置文件和文件调用都在不同目录,这样很不方便。

解决方法

1、把shell脚本和配置文件都放到/src/data/下面,统一路径好管理。

2、代码里jar调用也改成/src/data

优化详细说明:

一、读取证书相关

HttpsClientUtils.java读取证书部分,需要读取jar包里的路径

    //证书路径

    private static final String filePath= "/src/assets/CASB-client-cert-1592793484077.p12";

    private static final String passWord="217e599fb482804d9f5ac4fe8137aa37";

    public static CloseableHttpClient createHttpsClient(String filePath,String passWord) throws Exception{

        SSLContext sslcontext;

        CloseableHttpClient httpClient=null;

        try {

            KeyStore keyStore = KeyStore.getInstance("PKCS12");

            //FileInputStream fileInputStream=new FileInputStream(filePath);

            InputStream inputStream=null;

            if (Common.isRunningInJar()) { //如果是jar包,从jar包中读取

                inputStream= HttpsClientUtils.class.getResourceAsStream(filePath);

                }

            else {

                filePath=System.getProperty("user.dir")+filePath;

                inputStream= new FileInputStream(filePath);

            }

            keyStore.load(inputStream, passWord.toCharArray());

二、读取配置文件相关

读取配置文件相关,增加jar包判断,如果是jar包,1、config.properties和db-java.properties从jar包/src/data/目录读取

   public String readProperty(String key){

        Properties pros=new Properties();

        String value="";

        InputStream is=null;

        try{

                if (Common.isRunningInJar()) { //如果是jar包,从jar包中读取

                    //如果是config.properties,从外部读取

                    if(propertiesName.equals("config.properties") || propertiesName.equals("db-java.properties")) {

                        String filePath = System.getProperty("user.dir") + "/src/data/" + propertiesName;

                        is = new FileInputStream(filePath);

                    }//非config.properties,从jar包/目前获取

                    else {

                        is = PropertiesUtil.class.getResourceAsStream(File.separator + propertiesName);

                    }

                }

                else {//非jar包,从classpath获取

                    //String filePath = System.getProperty("user.dir") + "/src/main/resources/" + propertiesName;

                    String filePath = PropertiesUtil.class.getClassLoader().getResource(propertiesName).getPath();

                    is = new FileInputStream(filePath);

                }

三、插件操作相关修改部分

1.脚本修改部分:

插件安装到“jar包当前目录/plugin目录”,修改安装脚本:install_plugin_p.sh的3处

#删除原有插件里的文件和SDK目录

plugin_installDir=`find $pwdDir/ -name plugin`

  sh install.sh $pwdDir/plugin <../config

  #查找是否存在插件安装的目录

  pluginDir_new=`find $pwdDir/ -name plugin`

2.Java代码修改部分:

2.1、把安装脚本都放到“jar包当前目录//src/data目录”,需要修改AoeAllTest.java的test01_aoePluginTest()部分

        String path=System.getProperty("user.dir");

        if (!Common.isWindows()){

            System.out.println("This is linux");

            //执行脚本,安装插件

            String command="sh ./src/main/shell/install_plugin_p.sh";

            if(Common.isRunningInJar()){

                command="sh ./src/data/install_plugin_p.sh";

            }

            Boolean result =ShellUtils.executeShell(command);

            System.out.println("install_plugin_p.sh脚本执行情况:"+result);

2.2、Common.java中新增isRunningInJar()方法:

    /**

     * 是否以Jar包运行

     * @return

     */

    public static boolean isRunningInJar() {

        try {

            String className = Common.class.getName().replace('.', '/');

            String classJar = Common.class.getResource("/" + className + ".class").toString();

            return classJar.startsWith("jar:");

        } catch (Exception e) {

            log.warn("get Running status failed.");

            return false;

        }

    }

四、客户端相关修改部分

1.脚本修改部分:因配置文件db-java.propeties放到jar包当前目录下

1.1、install_client_e.sh获取配置文件路径需要修改

#查找数据库文件并读取数据

db_properties=`find $pwdDir/src/data  -name "db-java.properties"`

1.2、run_task.sh获取配置文件路径需要修改

#查找数据库文件并读取数据

db_properties=`find $pwdDir/src/data -name "db-java.properties"`

2.Java代码修改部分:

2.1、把安装脚本都放到“jar包当前目录/src/data目录”,需要修改AoeAllTest.java的setup()中的以下部分:

        //linux安装客户端

        if (!Common.isWindows()){

            System.out.println("This is linux");

            //执行脚本,安装客户端

            String command="sh ./src/main/shell/install_client_e.sh";

            if(Common.isRunningInJar()){

                command="sh ./src/data/install_client_e.sh";

            }

            Boolean result = ShellUtils.executeShell(command);

            System.out.println(result);

        }

        else { System.out.println("This is windows"); }

2.2、把执行任务的脚本都放到“jar包当前目录/src/data目录”,需要修改AoeAllTest.java的test02_aoeClientEncrypt()部分

和test03_aoeClientDecrypt()部分

        String shellCommand="sh ./src/main/shell/run_task.sh "+clientTaskId;

        if(Common.isRunningInJar()){

            shellCommand="sh ./src/data/run_task.sh "+clientTaskId;

        }

执行jar包

一、执行操作步骤

1、把配置文件config.properties和db-java.properties和3个sh脚本和xlsx放到jra包执行目录/src/data/目录下

2、Jar包(需要引用插件的)执行命令

配置好SDK的环境变量export LD_LIBRARY_PATH=/opt/casb/CipherSuiteSdk_linux/lib

#加载环境变量

$source /etc/profile

#执行jar包

$java -Djava.ext.dirs=./plugin/:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/ext -jar casbprocess-1.0-SNAPSHOT-jar-with-dependencies.jar

二、执行结果

[Java 接口自动化框架]-优化篇03_第1张图片

[Java 接口自动化框架]-优化篇03_第2张图片

[Java 接口自动化框架]-优化篇03_第3张图片

你可能感兴趣的:(#,Java自动化框架,java相关,java,自动化,开发语言)