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.
- Prepare git, JDK8 and maven3
git clone https://github.com/apache/incubator-skywalking.git
cd incubator-skywalking/
- Switch to the tag by using
git checkout [tagname]
(Optional, switch if want to build a release from source codes) git submodule init
git submodule update
- Run
mvn clean package -DskipTests
- All packages are in
/dist
.(.tar.gz for Linux and .zip for Windows).
- Prepare JDK8 and maven3
- Run
mvn clean package -DskipTests
- All packages are in
/dist
.(.tar.gz for Linux and .zip for Windows).
- Import the project as a maven project
- Run
mvn compile -Dmaven.test.skip=true
to compile project and generate source codes. Because we use gRPC and protobuf. - Set Generated Source Codes folders.
grpc-java
andjava
folders in apm-protocol/apm-network/target/generated-sources/protobufgrpc-java
andjava
folders in apm-collector/apm-collector-remote/apm-remote-grpc-provider/target/generated-sources/protobuf
- Import the project as a maven project
- For supporting multiple source directories, you need to add the following configuration in
incubator-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>
- Add the following configuration under to let eclipse's M2e plug-in supports execution's solution configuration
<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>
- Adding Google guava dependency to apm-collector-remote/collector-remote-grpc-provider/pom.xml files
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>24.0-jre</version>
</dependency>
- Run
mvn compile -Dmaven.test.skip=true
- Run
maven update
. Must remove the clean projects item before maven update(This will be clear the proto conversion Java file generated by the complie) - Run
mvn compile
complie collector-remote-grpc-provider and apm-protocol - Refresh project
Due to license incompatibilities/restrictions these plugins under apm-sniffer/apm-sdk-plugin/
are not built by default.
Download them manually into the ci-dependencies/
directory and the plugins will be included in the maven reactor and built.
The names of the artifacts downloaded and placed in the ci-dependencies/
directory must be exact:
- resin-3.0.9.jar
- resin-4.0.41.jar
- ojdbc14-10.2.0.4.0.jar