标准 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
相关推荐
身如柳絮随风扬2 天前
链路追踪SkyWalking 架构了解
架构·skywalking
洒满阳光的午后6 天前
我做了一个“能理解业务语义”的可观测性 MCP Server:统一接入 Prometheus、OpenObserve 和 SkyWalking
人工智能·ai·prometheus·skywalking·openobserve·mcp
梵得儿SHI6 天前
SpringCloud 实战落地:可观测性建设(SkyWalking + Prometheus + Grafana)从 0 到 1 生产级部署
grafana·prometheus·springcloud·skywalking·微服务可观测性·线上问题排查
Jinkxs7 天前
SkyWalking - Spring Cloud Alibaba 全链路追踪实战
skywalking
烛之武9 天前
Skywalking服务链路追踪与Jemeter压力测试
压力测试·skywalking
鬼先生_sir9 天前
Spring Cloud 微服务监控实战:SkyWalking + Prometheus+Grafana 全栈解决方案
运维·spring cloud·grafana·prometheus·skywalking
dgvri15 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
rOuN STAT15 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
危笑ioi15 天前
helm部署skywalking链路追踪 java
java·开发语言·skywalking
MmeD UCIZ17 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking