标准 Windows 编译 SkyWalking version=10.4

标准 Windows 编译步骤

1. 克隆 SkyWalking

复制代码
git clone https://github.com/apache/skywalking.git
cd skywalking 
git submodule update --init --recursive

2. 编译(带 UI)

复制代码
mvn clean package -DskipTests 

然后就会在

D:\IdeaProjects\skywalking-full\dist中生成一个

apache-skywalking-apm-bin.tar.gz的文件

解压缩后目录结构如下:

├─bin

├─config

│ ├─cilium-rules

│ ├─envoy-metrics-rules

│ ├─lal

│ ├─log-mal-rules

│ ├─meter-analyzer-config

│ ├─oal

│ ├─openapi-definitions

│ │ └─serviceA

│ ├─otel-rules

│ │ ├─activemq

│ │ ├─aws-dynamodb

│ │ ├─aws-eks

│ │ ├─aws-gateway

│ │ ├─aws-s3

│ │ ├─banyandb

│ │ ├─bookkeeper

│ │ ├─clickhouse

│ │ ├─elasticsearch

│ │ ├─flink

│ │ ├─k8s

│ │ ├─kafka

│ │ ├─kong

│ │ ├─mongodb

│ │ ├─mysql

│ │ ├─nginx

│ │ ├─postgresql

│ │ ├─pulsar

│ │ ├─rabbitmq

│ │ ├─redis

│ │ └─rocketmq

│ ├─telegraf-rules

│ ├─ui-initialized-templates

│ │ ├─activemq

│ │ ├─apisix

│ │ ├─aws_dynamodb

│ │ ├─aws_eks

│ │ ├─aws_gateway

│ │ ├─aws_s3

│ │ ├─banyandb

│ │ ├─bookkeeper

│ │ ├─browser

│ │ ├─cilium_service

│ │ ├─clickhouse

│ │ ├─custom

│ │ ├─elasticsearch

│ │ ├─flink

│ │ ├─general

│ │ ├─k8s

│ │ ├─k8s_service

│ │ ├─kafka

│ │ ├─kong

│ │ ├─mesh

│ │ ├─mesh_cp

│ │ ├─mesh_dp

│ │ ├─mongodb

│ │ ├─mysql

│ │ ├─nginx

│ │ ├─os_linux

│ │ ├─os_windows

│ │ ├─postgresql

│ │ ├─pulsar

│ │ ├─rabbitmq

│ │ ├─redis

│ │ ├─rocketmq

│ │ ├─so11y_go_agent

│ │ ├─so11y_java_agent

│ │ ├─so11y_oap

│ │ ├─so11y_satellite

│ │ ├─virtual_cache

│ │ ├─virtual_database

│ │ └─virtual_mq

│ └─zabbix-rules

├─config-examples

├─licenses

│ └─ui-licenses

├─logs

├─oap-libs

├─tools

│ ├─data-generator

│ │ ├─bin

│ │ └─config

│ └─profile-exporter

└─webapp

然后去bin中运行oapService.bat结果就不行了,因为没有配置数据库

试了推荐的h2,不好用,因为已经移除了,另外sqlite的也被移除了,如果想用最好降低版本

storage 在 10.4.0 中支持?
h2 ❌ 已被删除
sqlite ❌ 已被删除
elasticsearch ✅ 支持(推荐)
banyandb ✅ 支持

如果你必须用 SQLite(开发轻量环境),请退回到 SkyWalking 10.2.0

本机正好有mysql 8.0.30,就试一下,下载地址https://dev.mysql.com/downloads/

改进D:\IdeaProjects\skywalking-full\dist\apache-skywalking-apm-bin\config\application.yml

复制代码
storage:
  selector: mysql
    mysql:
    properties:
      jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true&allowMultiQueries=true"}
      dataSource.user: ${SW_DATA_SOURCE_USER:root}
      dataSource.password: ${SW_DATA_SOURCE_PASSWORD:你的数据库密码}
      dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
      dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
      dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
      dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
    metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
    maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}
    asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}

并下载 https://downloads.mysql.com/archives/c-j/中的库,解压缩

把mysql-connector-java-8.0.30.jar放到

D:\IdeaProjects\skywalking-full\dist\apache-skywalking-apm-bin\oap-libs

配置好后,使用mysql命令行

复制代码
CREATE DATABASE swtest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

如果不创建上面的数据库表, HikariCP 连接池初始化失败,OAP 直接退出。

另外下载一个mysql可视化的软件

https://dbeaver.io/download/

如果有什么错,看一下dist\apache-skywalking-apm-bin\logs中的

skywalking-oap-server.log

如果这个窗口一直不关就是成功 了,另外上面日志没有啥堆栈错误基本就可以了,

然后运行webappService.bat

然后访问localhost:8080就出来了

针对apm-protocol/apm-network模块的处理方法,

清空 SkyWalking apm-network 模块的 target/ 目录有 3 种稳定方式,其中 最推荐的是使用 Maven clean,不会误删其它内容。


✅ 方法 1 ------ Maven 官方、最标准方式(推荐)

进入 SkyWalking 根目录执行:

复制代码
mvn -pl apm-protocol/apm-network clean

作用:

✔ 只清理 apm-network

✔ 删除整个 target/ 目录

✔ 同步清除生成的 Java 代码、class、编译缓存

✘ 不会影响其他模块

非常安全 → 最常用于改 .proto 后重编。


✅ 方法 2 ------ 进入模块目录执行 clean

复制代码
cd apm-protocol/apm-network
mvn clean

效果完全相同:

复制代码
rm -rf apm-protocol/apm-network/target/

⚡ 方法 3 ------ 手动删除(Linux 或 WSL)

复制代码
rm -rf apm-protocol/apm-network/target

或 Windows PowerShell:

复制代码
Remove-Item -Recurse -Force apm-protocol\apm-network\target

⚠ 手动删除适用于目录被占用无法 clean 时。


mvn -pl 是 Maven 中非常重要的参数,作用是:

👉 -pl = --projects 表示"只构建某些模块(project list)"

简单说,它允许你在多模块项目中 指定某一个或多个模块单独构建,而不是编译整个工程。

如重新生成apm-protocol/apm-network/target下的代码,使用

复制代码
mvn -pl apm-protocol/apm-network compile

就会重新生成target代码

上面执行的clean ,compile是和双击右边的mvn对应选项是等效的

另外双击后在命令行窗口中看到的命令就是实际执行的,

把下面这个复制到 cmd的终端中也可以编译了

下面的是compile指令

复制代码
C:\jdk-17\bin\java.exe -Dmaven.multiModuleProjectDirectory=D:\IdeaProjects\skywalking-full -Djansi.passthrough=true -Dmaven.home=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4 -Dclassworlds.conf=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\bin\m2.conf "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\lib\idea_rt.jar=57095" -Dfile.encoding=UTF-8 -classpath C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds-2.6.0.jar;C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds.license org.codehaus.classworlds.Launcher -Didea.version=2025.1.4.1 compile

下面的是clean指令

复制代码
C:\jdk-17\bin\java.exe -Dmaven.multiModuleProjectDirectory=D:\IdeaProjects\skywalking-full -Djansi.passthrough=true -Dmaven.home=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4 -Dclassworlds.conf=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\bin\m2.conf "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\lib\idea_rt.jar=55909" -Dfile.encoding=UTF-8 -classpath C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds-2.6.0.jar;C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds.license org.codehaus.classworlds.Launcher -Didea.version=2025.1.4.1 clean
相关推荐
Linux-187415 小时前
分布式链路追踪系统之docker-compose安装skywalking
云原生·docker-compose·skywalking·分布式链路追踪系统·应用程序性能监控
流烟默1 天前
SpringBoot应用链路追踪 traceId 技术方案
spring boot·skywalking·traceid
Linux-18742 天前
分布式链路追踪系统之二进制安装skywalking
elasticsearch·云原生·skywalking·分布式链路追踪系统·应用程序性能监控
令狐前生5 天前
SpringBoot3项目集成Skywalking示例
skywalking
乒乓狂魔7 天前
SkyWalking 也能 AI 智能化了
人工智能·skywalking
摇滚侠14 天前
Skywalking 应用性能监控和可观测性分析平台 简介
skywalking
Databuff14 天前
skywalking 快速使用入门
skywalking
摇滚侠16 天前
Apache Skywalking 实战 阅读笔记 第三章
笔记·apache·skywalking
摇滚侠17 天前
Apache Skywalking 实战 阅读笔记 第二章
笔记·apache·skywalking
Databuff17 天前
国产开源APM databuff 成为 CNCF 顶级项目opentelemetry 官宣Vendor
运维·开源·skywalking·apm·可观测性·opentelemetry