-
【问题描述】编译netty 4.0.0.Alpha1等版本执行mvn install时报General SSLEngine problem等错误,详细报错如下:【解决方法】方法1:在pom.xml中注释testsuite然后再次执行mvn install或mvn package进行编译;方法2:执行mvn编译命令时,增加-DskipTests参数,即mvn clean install -DskipTests或mvn clean package -DskipTests方法3:先进入源码路径的testsuite路径中执行执行mvn clean install -DskipTests编译netty-testsuite,然后返回上层源码解压路径分别到common/buffer/codec/codec-http/transport/handler/example/all路径下分别执行mvn clean install -DskipTests或mvn clean package -DskipTests单独编译各netty的子组件common/buffer/codec/codec-http/transport/handler/example/all。
-
偶然发现一款基于java语言来构造测试数据的工具,给大家做下分享一、 打开 IntelliJ IDEA,创建一个maven项目,配置pom.xml文件如下:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.huawei.data.demo</groupId> <artifactId>generate-data</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.github.javafaker</groupId> <artifactId>javafaker</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency> </dependencies> </project>二、创建一个POJO类,定义属性如下,注意这里使用了lombok插件@Data public class UserInfo { private String realName; private String cellPhone; private String universityName; private String city; private String street; @Override public String toString() { return realName + "," + cellPhone + "," + universityName + "," + city + "," + street + "\n"; } }三、创建生成测试数据的测试类public class GenerateData { public static void main(String[] args) throws Exception { FileOutputStream outputStream = new FileOutputStream("test.txt",true); Faker fakerWithCN = new Faker(Locale.CHINA); for (int i=0; i<10;i++){ UserInfo userInfo = new UserInfo(); userInfo.setRealName(fakerWithCN.name().fullName()); userInfo.setCellPhone(fakerWithCN.phoneNumber().cellPhone()); userInfo.setCity(fakerWithCN.address().city()); userInfo.setStreet(fakerWithCN.address().streetAddress()); userInfo.setUniversityName(fakerWithCN.university().name()); System.out.println(userInfo.toString()); outputStream.write(userInfo.toString().getBytes(StandardCharsets.UTF_8)); } outputStream.close(); } }执行后,查看生成的测试数据文件 test.txt中如下更多javafaker支持的数据分类,可查看 http://dius.github.io/java-faker/apidocs/index.html
-
【问题描述】编译jansi 2.0过程中报core dumped、Corrupted STDOUT by directly writing native stream in forked JVM 1错误,详细报错如下:【解决方法】修改pom.xml,将maven-surefire-plugin版本号从3.0.0-M5改为2.9,如下图所示再次执行mvn install编译即可;
-
【问题描述】编译jansi 2.0报A fatal error has been detected by the Java Runtime Environment错误,详细报错如下【解决方法】修改pom.xml文件将189行注释然后再执行mvn install编译;
-
# 0 概述 根据gRPC协议生成客户端与服务端代码 步骤: 一、使用protoc buffer生成gRPC通信代码和消息体; 二、根据gRPC通信代码中的Service写Service实现类; 三、根据Service实现类实现服务端代码与客户端代码; gRPC将通信管道、请求与响应的消息体编码序列化及反序列化都通过proto buffer自动生成了,开发者只需要将生成的gRPC的基础实现类xxxGrpc.xxxImplBase扩展为一个实现类,在该实现类中说明要对客户端请求体做哪些事情,以及定义响应体的格式。使用gRPC的接口与Service实现类实现服务端代码与客户端代码。 # 1 使用protoc buffer生成gRPC通信代码和消息体 使用maven的grpc依赖与插件生成代码。 步骤: 1. 将.proto协议文件放置在java/main/proto目录下; 2. 配置pom.xml文件中的依赖与插件(根据官方文档) 3. 执行mvn clean install 这样grpc通信部分代码会生成在target/generated-sources/protobuf/grpc-java下,命名为xxxxGrpc.java,消息体部分代码会生成在target/generated-sources/protobuf/java下,命名在.proto文件中指定。 # 2 根据生成的代码编写Service实现类 协议文件.proto一般只说明方法名称、gRPC服务类型、请求与响应的消息体类型,但是具体根据请求得到什么样子的响应就需要自己编写Service实现类。 步骤: 1. 将第1步生成的通信代码与消息体代码放在一个另起的工程里; 2. 在这个另起的工程里定义一个xxxImpl的实现类,继承gRPC通信代码中的xxxGrpc.xxxImplBase实现类; 3. 在新的实现类中通过gRPC的newBuilder() API处理request与response。 # 3 实现服务端代码 服务端的代码主要是通过上一步定义的Service实现类结合gRPC API完成编写。 步骤: 1. 定义gRPC Server; 2. 使用gRPC的ServerBuilder API与Service实现类xxxImpl给定义好的gRPC Server赋值; 3. 定义gRPC Server中的start() stop()以及主启动main方法。 # 4 实现客户端代码 客户端的代码主要是通过定义gRPC的channel和stub发起请求的查询、通信、查询、序列化/反序列化的一系列操作,后面的这些操作开发者不感知。 步骤: 1. 使用gRPC的NettyChannelBuilder API定义channel; 2. 使用生成的通信代码xxxGrpc.xxxBlockingStub定义stub; 3. 定义gRPC中的方法,该方法与stub中的方法一致; 4. 定义客户端主启动main方法实施调用。 # 附录: gRPC官方文档:https://grpc.io/docs/what-is-grpc/core-concepts/ Proto3语法:https://developers.google.com/protocol-buffers/docs/proto3
-
日常任务中的发布环节的初始化Maven私有依赖库任务一直没有完成,今天搜文档做功课,多次尝试后终于做出来了!首先点击任务后,跳转至2018年的时候,参加活动已经创建了,那么任务为啥没有识别呢?搜了下,没有删除的地方,那是需要传个库上去么?试试!按照文档,发布组件到依赖库刷新会员中心后,任务依赖没有完成,看来不是要这个。那么私有依赖库这里没有删除的地方,新建不了怎么办呢?换个区域试试,北京四还啥都没有呢。
-
敏捷开发和Devops给测试提出了相当高的要求,自动化测试工具也应运而生。从目前笔者检索到的资料来看,自动化测试工具有以下几种:(1)JUnit——Java语言的单元测试框架,另外还有衍生的NUnit(.NET的单元测试框架)等xUnit家族,如CPPUnit等等。(2)Postman——强大的Web API & HTTP 请求调试工具。(3)Selenium——Web应用的自动化测试工具,用来模拟用户在浏览器的操作。(4)Appnium——移动端(支持Android和IOS)的自动化测试工具。(5)Robot Framework——功能自动化测试框架。这是某些大厂常用的测试框架。(6)HttpClient——支持HTTP协议的客户端程序包。(7)TestNG——接口自动化测试工具,TestNG在JUNIT和NUnit的基础上增加了很多功能,支持单元自动化测试,还可以集成Selenium,Appnium和HttpClient等框架进行各种类型的自动化测试。(8)RestAssured——基于REST服务的测试过程的Java DSL。可以方便的处理REST请求并处理响应信息。(9)JMeter——基于Java的压力测试工具。(10)LoadRunner——老牌的压力测试工具。。是个收费的商业软件。我们看到,华为云推出了很多API服务,我们就以API测试最常见的TestNG,通过实例对API测试进行讲解,以此来理解一下TestNG的用法。以笔者常用的eclipse为例。首先我们需解决安装TestNG的问题。由于众所周知的原因,我们需要先配置maven的阿里云镜像(当然是否也可以用华为云镜像,读者也可以试一下)修改Users/zhang/.m2/settings.xml文件:我们建立一个Maven工程,并在工程内修改POM.xml文件如下:这样,Maven会自动下载TestNG依赖包。我们再通过eclipse的菜单Install New Software安装TestNG插件:在work with栏输入地址:http://dl.bintray.com/testng-team/testng-eclipse-release/ 并按回车键,系统会检索出TestNG:选中然后安装即可。我们在src/main/java的相关package下新建个HelloTest.java的文件,内容如下:package com.zhanghui.testing; import org.testng.annotations.Test; public class HelloTest { @Test public void testCase1() { System.out.println("Hello Zhanghui!"); } }在代码上点击右键-》RunAs=》TestNG Test系统控制台会出现以下内容:表明TestNG安装和测试成功。Suite表示测试套件,是对多个测试类进行组合而成的suite.比如用于测试基本流程的套件,用于测试促销功能的套件,甚至用于进行冒烟测试的套件等等。其中,TestNG还支持如下注解:@BeforeSuite @AfterSuite注解——在该套件(Suite)的所有测试之前/后运行,仅运行一次@BeforeClass和 @AfterClass注解——在调用当前类的第一个测试方法之前/后运行,仅运行一次@BeforeTest和@AfterTest注解——在属于test标签内的类的所有测试方法运行之前/后运行@BeforeMethod和@AfterMethod注解——在每个测试方法之前/后都运行@BeforeGroups和@AfterGroup注解——在每个group之前/后运行我们用实例示范一下:package com.zhanghui.testing; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterGroups; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeGroups; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class BeforeAfterTest { @Test(groups="group1") public void test1() { System.out.println("test1 from group1"); Assert.assertTrue(true); } @Test(groups="group1") public void test11() { System.out.println("test11 from group1"); Assert.assertTrue(true); } @Test(groups="group2") public void test2() { System.out.println("test2 from group2"); Assert.assertTrue(true); } @Test(groups="group2") public void test21() { System.out.println("test21 from group2"); Assert.assertTrue(true); } @BeforeTest public void beforeTest() { System.out.println("beforeTest"); } @AfterTest public void afterTest() { System.out.println("afterTest"); } @BeforeClass public void beforeClass() { System.out.println("beforeClass"); } @AfterClass public void afterClass() { System.out.println("afterClass"); } @BeforeSuite public void beforeSuite() { System.out.println("beforeSuite"); } @AfterSuite public void afterSuite() { System.out.println("afterSuite"); } //只对group1有效 @BeforeGroups(groups="group1") public void beforeGroups() { System.out.println("beforeGroups1"); } //只对group1有效 @AfterGroups(groups="group1") public void afterGroups() { System.out.println("afterGroups1"); } @BeforeMethod public void beforeMethod() { System.out.println("beforeMethod"); } @AfterMethod public void afterMethod() { System.out.println("afterMethod"); } }结果如下:[RemoteTestNG] detected TestNG version 7.3.0 beforeSuite beforeTest beforeClass beforeMethod test1 from group1 afterMethod beforeMethod test11 from group1 afterMethod beforeMethod test2 from group2 afterMethod beforeMethod test21 from group2 afterMethod afterClass afterTest PASSED: test1 PASSED: test11 PASSED: test2 PASSED: test21 =============================================== Default test Tests run: 4, Failures: 0, Skips: 0 =============================================== afterSuite =============================================== Default suite Total tests run: 4, Passes: 4, Failures: 0, Skips: 0 ===============================================我们来做个简单的分析:Suite>Test>Class>Method. TestNG会根据本class中的以上顺序依次完成相关的Before注解的执行,然后在测试结束时依次倒过来完成After注解的执行。它也会根据每个 @Test注解的group,依次将本group下的所有test执行完,再执行下一个group.
-
maven选择只有 jdk11, jdk14的项目无法编译,能否增加支持一下,非常感谢 ### 异常 `java.lang.IllegalArgumentException: invalid flag: --release` ### pom.xml 片段 ``` org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin} 14 14 14 true --enable-preview -Amapstruct.suppressGeneratorTimestamp=true -Amapstruct.suppressGeneratorVersionInfoComment=true -Amapstruct.verbose=true org.projectlombok lombok ${lombok.version} org.mapstruct mapstruct-processor ${org.mapstruct.version} ```
-
## 1 - 问题描述 ### 1.1 背景说明 为客户提供样例代码,测试中需要对 Java + Scala 编写的 Maven 项目进行编译打包,由于 依赖了部分外部 jar 包,也就是有部分 jar 包没有在 pom.xml 中指定,导致编译失败。 ### 1.2 存在的问题 原有样例代码中,pom.xml 引入了 `org.scala-tools.maven-scala-plugin` 插件(),用于打包 Scala 项目,其配置方式如下: ```xml <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <configuration> <recompileMode>modified-only</recompileMode> </configuration> <executions> <execution> <id>main-scalac</id> <phase>process-resources</phase> <goals> <goal>add-source</goal> <goal>compile</goal> </goals> </execution> </executions> </plugin> ``` 该插件从2011年起就没有更新过,官网地址也已失效,无法找到有效的支持文档。 ## 2 - 问题解决 ### 2.1 方法一:通过scope=system引入外部依赖 Maven 支持在 dependency 中引入系统依赖,其中 `scope = system` 与 `scope = provided` 的依赖范围一致:**只在编译和测试范围内有效,运行时范围内无效**。具体配置示例如下: ```xml <dependency> <groupId>com.huawei.bigdata</groupId> <artifactId>spark-client</artifactId> <scope>system</scope> <systemPath>${project.basedir}/libs/spark-client.jar</systemPath> </dependency> ``` 将所有的外部 jar 包都通过这种方式引入,即可正常编译。 但由于外部依赖包通常都会比较多,这种方式维护成本太高,所以不予考虑。 ### 2.2 方法二:通过新插件指定外部依赖 经过搜索,找到了一款新插件:,pom.xml 中这样配置: ```xml <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>scala-compile-first</id> <phase>process-resources</phase> <goals> <goal>add-source</goal> <goal>compile</goal> </goals> </execution> <execution> <id>scala-test-compile</id> <phase>process-test-resources</phase> <goals> <goal>add-source</goal> <goal>testCompile</goal> </goals> </execution> </executions> <configuration> <args> <!-- 编译时使用 libs 目录下的 jar 包,通过 mvn scala:help 查看说明 --> <arg>-extdirs</arg> <arg>${project.basedir}/libs</arg> </args> <scalaVersion>2.11.8</scalaVersion> </configuration> </plugin> ``` 通过 -extdirs 参数,指定外部依赖的 jar 包。 其他参数的查看:在终端窗口中,通过命令 mvn scala:help 查看主要配置项参数,例如:  更详细的使用说明,请参考: **编译、打包用法:** (1) 直接在 IDEA 的 Maven -> Project -> Lifecucle -> compile | package 进行编译或打包; (2) 在终端窗口,通过如下命令进行编译打包: ```bash mvn clean scala:compile compile package ``` 说明:在 compile 前加 scala:compile,这是该插件提供的选项,表示:先编译scala,再编译java,最后打包。
-
这个错误是出现了什么问题,该如何解决呀?
-
您好,公司内部Nexus私有仓库可以代理华为Maven仓库么?像阿里云的公开Maven仓库一样。如是,代理地址是 https://mirrors.huaweicloud.com/repository/maven/ 么? Nexus 2还支持么? 谢谢。
上滑加载中