This is an automated email from the ASF dual-hosted git repository. daming pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/skywalking-agent-test-tool.git
The following commit(s) were added to refs/heads/master by this push: new 55c13b3 Provide data validation API in Mock Collector (#9) 55c13b3 is described below commit 55c13b307c2d9fa2c497893a2a5e4a2651fe983b Author: Daming <zt...@foxmail.com> AuthorDate: Mon Mar 16 10:02:39 2020 +0800 Provide data validation API in Mock Collector (#9) * Provide data validation API in Mock Collector * fix conflict --- README.md | 12 ++-- mock-collector/pom.xml | 5 ++ .../skywalking/plugin/test/mockcollector/Main.java | 28 ++++++--- .../MockCLRMetricReportService.java | 2 +- .../{service => mock}/MockInstancePingService.java | 2 +- .../MockJVMMetricReportService.java | 2 +- .../{service => mock}/MockRegisterService.java | 2 +- .../{service => mock}/MockTraceSegmentService.java | 2 +- .../mockcollector/{service => mock}/Sequences.java | 2 +- .../service => mock/rest}/JettyJsonHandler.java | 2 +- .../rest}/MockInstanceRegisterServletHandler.java | 4 +- .../MockServiceInstancePingServletHandler.java | 2 +- .../rest}/MockServiceRegisterServletHandler.java | 4 +- .../MockTraceSegmentCollectServletHandler.java | 2 +- .../mockcollector/service/DataValidateService.java | 68 ++++++++++++++++++++++ pom.xml | 2 +- validator/pom.xml | 2 +- 17 files changed, 116 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index ab4b9dc..c64380b 100644 --- a/README.md +++ b/README.md @@ -17,12 +17,12 @@ Eventually, validate the file downloaded from `mock collector` by using `SkyWalk ## Apache SkyWalking Mock Collector -- requirement: +### Requirement 1. JDK 1.8+ 2. Maven -- How to install +### How to install The `mock collector` is written by pure-`Java`. It compiles and packages through `Maven`. @@ -34,13 +34,13 @@ cd ./mock-collector bash ./bin/collector-startup.sh ``` -after above steps, we can check whether the `mock collector` is available through HTTP API. To visit `http://localhost:12800/status` and get the response with `success` in the body of content. +after above steps, we can check whether the `mock collector` is available through HTTP API. To visit `http://localhost:12800/healthCheck` and get the response with `success` in the body of content. Finally, To visit follow URL to download the data as `yaml` file, which can be used by `SkyWalking Validator Tool`. http://localhost:12800/receiveData -- How to config on agent +### How to config on agent We can modify the configurations of agent in `./config/agent.conf`, as follows @@ -56,6 +56,10 @@ or specify the jvm arguments like: -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:19876 ``` +### Data validation in Mock Collector + +Currently, we integration SkyWalking Validator Tool in Mock Collector. We can post the `expectedData.yaml` to `/dataValidate` after agent reported. + ## Apache SkyWalking Validator Tool `Validator Tool` is a data validating tool. It is responsible for validating the `expected data` with `actual data`. diff --git a/mock-collector/pom.xml b/mock-collector/pom.xml index 45a16d1..2c42fbe 100644 --- a/mock-collector/pom.xml +++ b/mock-collector/pom.xml @@ -45,6 +45,11 @@ <dependencies> <dependency> + <groupId>org.apache.skywalking.plugin</groupId> + <artifactId>validator</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> <version>${protobuf-java-util.version}</version> diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java index a3ba674..0b9a5d1 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java @@ -25,17 +25,19 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; -import org.apache.skywalking.plugin.test.mockcollector.rest.service.MockInstanceRegisterServletHandler; -import org.apache.skywalking.plugin.test.mockcollector.rest.service.MockServiceInstancePingServletHandler; -import org.apache.skywalking.plugin.test.mockcollector.rest.service.MockServiceRegisterServletHandler; -import org.apache.skywalking.plugin.test.mockcollector.rest.service.MockTraceSegmentCollectServletHandler; +import org.apache.skywalking.plugin.test.mockcollector.mock.rest.MockInstanceRegisterServletHandler; +import org.apache.skywalking.plugin.test.mockcollector.mock.rest.MockServiceInstancePingServletHandler; +import org.apache.skywalking.plugin.test.mockcollector.mock.rest.MockServiceRegisterServletHandler; +import org.apache.skywalking.plugin.test.mockcollector.mock.rest.MockTraceSegmentCollectServletHandler; import org.apache.skywalking.plugin.test.mockcollector.service.ClearReceiveDataService; +import org.apache.skywalking.plugin.test.mockcollector.service.DataValidateService; import org.apache.skywalking.plugin.test.mockcollector.service.GrpcAddressHttpService; -import org.apache.skywalking.plugin.test.mockcollector.service.MockInstancePingService; -import org.apache.skywalking.plugin.test.mockcollector.service.MockJVMMetricReportService; -import org.apache.skywalking.plugin.test.mockcollector.service.MockRegisterService; -import org.apache.skywalking.plugin.test.mockcollector.service.MockTraceSegmentService; +import org.apache.skywalking.plugin.test.mockcollector.mock.MockInstancePingService; +import org.apache.skywalking.plugin.test.mockcollector.mock.MockJVMMetricReportService; +import org.apache.skywalking.plugin.test.mockcollector.mock.MockRegisterService; +import org.apache.skywalking.plugin.test.mockcollector.mock.MockTraceSegmentService; import org.apache.skywalking.plugin.test.mockcollector.service.ReceiveDataService; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; @@ -62,6 +64,15 @@ public class Main { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setStatus(200); + resp.getWriter().write("Success"); + resp.getWriter().flush(); + } + }), "/healthCheck"); + servletContextHandler.addServlet(new ServletHolder(new HttpServlet() { + @Override + protected void doGet(HttpServletRequest req, + HttpServletResponse resp) throws ServletException, IOException { if (ValidateData.INSTANCE.getRegistryItem().getServices().isEmpty()) { resp.setStatus(500); return; @@ -72,6 +83,7 @@ public class Main { } }), "/status"); servletContextHandler.addServlet(GrpcAddressHttpService.class, GrpcAddressHttpService.SERVLET_PATH); + servletContextHandler.addServlet(DataValidateService.class, DataValidateService.SERVLET_PATH); servletContextHandler.addServlet(ReceiveDataService.class, ReceiveDataService.SERVLET_PATH); servletContextHandler.addServlet(ClearReceiveDataService.class, ClearReceiveDataService.SERVLET_PATH); diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockCLRMetricReportService.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockCLRMetricReportService.java similarity index 95% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockCLRMetricReportService.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockCLRMetricReportService.java index dc969b7..0a16d7f 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockCLRMetricReportService.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockCLRMetricReportService.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.skywalking.plugin.test.mockcollector.service; +package org.apache.skywalking.plugin.test.mockcollector.mock; import io.grpc.stub.StreamObserver; import org.apache.skywalking.apm.network.common.Commands; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockInstancePingService.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockInstancePingService.java similarity index 96% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockInstancePingService.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockInstancePingService.java index a58a70a..82956c0 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockInstancePingService.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockInstancePingService.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.skywalking.plugin.test.mockcollector.service; +package org.apache.skywalking.plugin.test.mockcollector.mock; import io.grpc.stub.StreamObserver; import org.apache.skywalking.apm.network.common.Commands; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricReportService.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockJVMMetricReportService.java similarity index 95% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricReportService.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockJVMMetricReportService.java index 1b5d119..c7c3b09 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricReportService.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockJVMMetricReportService.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.skywalking.plugin.test.mockcollector.service; +package org.apache.skywalking.plugin.test.mockcollector.mock; import io.grpc.stub.StreamObserver; import org.apache.skywalking.apm.network.common.Commands; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockRegisterService.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockRegisterService.java similarity index 98% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockRegisterService.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockRegisterService.java index f1d8f91..58bfbde 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockRegisterService.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockRegisterService.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.skywalking.plugin.test.mockcollector.service; +package org.apache.skywalking.plugin.test.mockcollector.mock; import io.grpc.stub.StreamObserver; import lombok.extern.slf4j.Slf4j; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentService.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockTraceSegmentService.java similarity index 98% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentService.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockTraceSegmentService.java index f1d6388..5ea663e 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentService.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/MockTraceSegmentService.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.skywalking.plugin.test.mockcollector.service; +package org.apache.skywalking.plugin.test.mockcollector.mock; import com.google.protobuf.InvalidProtocolBufferException; import io.grpc.stub.StreamObserver; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/Sequences.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/Sequences.java similarity index 94% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/Sequences.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/Sequences.java index 415a52d..84859c0 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/Sequences.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/Sequences.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.skywalking.plugin.test.mockcollector.service; +package org.apache.skywalking.plugin.test.mockcollector.mock; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/JettyJsonHandler.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/JettyJsonHandler.java similarity index 97% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/JettyJsonHandler.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/JettyJsonHandler.java index ee8923f..5623a42 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/JettyJsonHandler.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/JettyJsonHandler.java @@ -16,7 +16,7 @@ * */ -package org.apache.skywalking.plugin.test.mockcollector.rest.service; +package org.apache.skywalking.plugin.test.mockcollector.mock.rest; import com.google.gson.JsonElement; import java.io.BufferedReader; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockInstanceRegisterServletHandler.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockInstanceRegisterServletHandler.java similarity index 94% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockInstanceRegisterServletHandler.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockInstanceRegisterServletHandler.java index 52f0ec4..66eb822 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockInstanceRegisterServletHandler.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockInstanceRegisterServletHandler.java @@ -16,7 +16,7 @@ * */ -package org.apache.skywalking.plugin.test.mockcollector.rest.service; +package org.apache.skywalking.plugin.test.mockcollector.mock.rest; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -27,7 +27,7 @@ import org.apache.skywalking.apm.network.register.v2.ServiceInstance; import org.apache.skywalking.apm.network.register.v2.ServiceInstances; import org.apache.skywalking.plugin.test.mockcollector.entity.RegistryItem; import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; -import org.apache.skywalking.plugin.test.mockcollector.service.Sequences; +import org.apache.skywalking.plugin.test.mockcollector.mock.Sequences; import org.apache.skywalking.plugin.test.mockcollector.util.ProtoBufJsonUtils; public class MockInstanceRegisterServletHandler extends JettyJsonHandler { diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockServiceInstancePingServletHandler.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockServiceInstancePingServletHandler.java similarity index 96% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockServiceInstancePingServletHandler.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockServiceInstancePingServletHandler.java index 631e49b..be1f216 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockServiceInstancePingServletHandler.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockServiceInstancePingServletHandler.java @@ -16,7 +16,7 @@ * */ -package org.apache.skywalking.plugin.test.mockcollector.rest.service; +package org.apache.skywalking.plugin.test.mockcollector.mock.rest; import com.google.gson.JsonArray; import com.google.gson.JsonElement; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockServiceRegisterServletHandler.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockServiceRegisterServletHandler.java similarity index 95% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockServiceRegisterServletHandler.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockServiceRegisterServletHandler.java index 70b9ba4..afd3020 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockServiceRegisterServletHandler.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockServiceRegisterServletHandler.java @@ -16,7 +16,7 @@ * */ -package org.apache.skywalking.plugin.test.mockcollector.rest.service; +package org.apache.skywalking.plugin.test.mockcollector.mock.rest; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -28,7 +28,7 @@ import org.apache.skywalking.apm.network.register.v2.Service; import org.apache.skywalking.apm.network.register.v2.Services; import org.apache.skywalking.plugin.test.mockcollector.entity.RegistryItem; import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; -import org.apache.skywalking.plugin.test.mockcollector.service.Sequences; +import org.apache.skywalking.plugin.test.mockcollector.mock.Sequences; import org.apache.skywalking.plugin.test.mockcollector.util.ProtoBufJsonUtils; public class MockServiceRegisterServletHandler extends JettyJsonHandler { diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockTraceSegmentCollectServletHandler.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockTraceSegmentCollectServletHandler.java similarity index 98% rename from mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockTraceSegmentCollectServletHandler.java rename to mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockTraceSegmentCollectServletHandler.java index 553aca8..2f8be4c 100644 --- a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/rest/service/MockTraceSegmentCollectServletHandler.java +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/mock/rest/MockTraceSegmentCollectServletHandler.java @@ -16,7 +16,7 @@ * */ -package org.apache.skywalking.plugin.test.mockcollector.rest.service; +package org.apache.skywalking.plugin.test.mockcollector.mock.rest; import com.google.common.io.CharStreams; import com.google.gson.JsonElement; diff --git a/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/DataValidateService.java b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/DataValidateService.java new file mode 100644 index 0000000..7a1378e --- /dev/null +++ b/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/DataValidateService.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.plugin.test.mockcollector.service; + +import com.google.common.base.Strings; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.skywalking.plugin.test.agent.tool.validator.assertor.DataAssert; +import org.apache.skywalking.plugin.test.agent.tool.validator.entity.Data; +import org.apache.skywalking.plugin.test.agent.tool.validator.exception.AssertFailedException; +import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; +import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateDataSerializer; +import org.yaml.snakeyaml.Yaml; + +public class DataValidateService extends HttpServlet { + private static final Gson gson = new GsonBuilder().registerTypeAdapter( + ValidateData.class, new ValidateDataSerializer() + ).create(); + + public static final String SERVLET_PATH = "/dataValidate"; + + @Override + protected void doPost(final HttpServletRequest req, + final HttpServletResponse resp) throws ServletException, IOException { + + final Yaml yaml = new Yaml(); + final String dump = yaml.dump(yaml.load(gson.toJson(ValidateData.INSTANCE))); + ByteArrayInputStream actualData = new ByteArrayInputStream(dump.getBytes()); + + PrintWriter writer = resp.getWriter(); + try { + DataAssert.assertEquals( + Data.Loader.loadData(req.getInputStream()), + Data.Loader.loadData(actualData)); + writer.write("success"); + resp.setStatus(200); + } catch (AssertFailedException exception) { + writer.write(Strings.nullToEmpty(exception.getMessage())); + writer.write("\n"); + writer.write(dump); + resp.setStatus(500); + } + writer.flush(); + } +} diff --git a/pom.xml b/pom.xml index aebbcb7..295e8c3 100644 --- a/pom.xml +++ b/pom.xml @@ -31,8 +31,8 @@ <packaging>pom</packaging> <modules> - <module>mock-collector</module> <module>validator</module> + <module>mock-collector</module> </modules> <properties> diff --git a/validator/pom.xml b/validator/pom.xml index 26c4001..382b9e1 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -33,7 +33,7 @@ <url>http://maven.apache.org</url> <build> - <finalName>validator</finalName> + <finalName>skywalking-validator</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>