This document helps people to compile and build the project in your maven and set your IDE.
Because we are using Git submodule, we recommend don't use GitHub
tag or release page to download source codes for compiling.
git clone https://github.com/apache/incubator-skywalking.git
cd incubator-skywalking/
git checkout [tagname]
(Optional, switch if want to build a release from source codes)git submodule init
git submodule update
./mvnw clean package -DskipTests
/dist
.(.tar.gz for Linux and .zip for Windows).Apache source code release
?For each official Apache release, there is a complete and independent source code tar, which is including all source codes. You could download it from SkyWalking Apache download page. No git related stuff required when compiling this. Just follow these steps.
./mvnw clean package -DskipTests
/dist
.(.tar.gz for Linux and .zip for Windows)../mvnw compile -Dmaven.test.skip=true
to compile project and generate source codes. Because we use gRPC and protobuf.grpc-java
and java
folders in apm-protocol/apm-network/target/generated-sources/protobufgrpc-java
and java
folders in oap-server/server-core/target/generated-sources/protobufgrpc-java
and java
folders in oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/target/generated-sources/protobufantlr
folder in oap-server/generate-tool/target/generated-sources/antlr4oal
folder in oap-server/generated-analysis/target/generated-sources/oalincubator-skywalking/pom.xml
file:<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>src/java/main</source> <source>apm-protocol/apm-network/target/generated-sources/protobuf</source> <source>apm-collector/apm-collector-remote/collector-remote-grpc-provider/target/generated-sources/protobuf</source> </sources> </configuration> </execution> </executions> </plugin>
<pluginManagement> <plugins> <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <versionRange>[1.8,)</versionRange> <goals> <goal>add-source</goal> </goals> </pluginExecutionFilter> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement>
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>24.0-jre</version> </dependency>
./mvnw compile -Dmaven.test.skip=true
maven update
. Must remove the clean projects item before maven update(This will be clear the proto conversion Java file generated by the complie)./mvnw compile
complie collector-remote-grpc-provider and apm-protocol