Компиляция и отладка исходного кода Netty

Netty

1. Загрузка исходного кода

Вилка кода из репозитория github в ваш собственный репозиторийgithub.com/netty/netty, а затем клонировать в локальный. Поскольку netty использует maven для управления проектами, это намного удобнее, чем gradle, просто откройте его с помощью идеи

2. С классом проблем нет

После клонирования кода мы нашли пример io.netty.example.http.websocketx.server.WebSocketServer и приготовились начать отладку.В это время мы обнаружили, что некоторые пакеты в модуле codec-redis сообщают об ошибках.image.pngЗайдя в модуль netty-common, я обнаружил, что таких классов нет, но есть заводной скрипт. Войдите в каталог netty-common и запустите mvn compile. найти ошибкуimage.pngЯ обнаружил, что пакет netty-tools не может быть загружен

3. Решить проблему с dev-инструментами

Мы обнаружили, что netty-common не нуждается в пакете io.netty:netty-dev-tools:jar на этапе компиляции, поэтому в родительском файле pom закомментируйте этот код.

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.5</version>
          <configuration>
            <resourceBundles>
              <resourceBundle>io.netty:netty-dev-tools:${project.version}</resourceBundle>
            </resourceBundles>
            <outputDirectory>${netty.dev.tools.directory}</outputDirectory>
            <attachToMain>false</attachToMain>
            <attachToTest>false</attachToTest>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>process</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

При этом уберите ссылку на dev-tools в pom.xml netty-common

<dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-dev-tools</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
      <optional>true</optional>
    </dependency>

Затем выполните mvn clean package -Dmaven.test.skip=true под netty-common, выполнение будет успешным, и сгенерированный файл класса будет найден под целью netty-common.image.png

4. Запустить пример

Запускаем io.netty.example.http.websocketx.server.WebSocketServer, программа запускается нормальноimage.pngДалее можно отлаживать и смотреть исходный код.

Для более интересного контента, пожалуйста, обратите внимание на общедоступный номер