Nano Hash - криптовалюты, майнинг, программирование

Обработка аннотаций с помощью gradle ничего в factorypath на eclipse

Я переключаюсь с maven на gradle.

Вот что у меня было в моем pom.xml

        <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-proc:none</compilerArgument>
                </configuration>
        </plugin>
        <plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <id>process</id>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <phase>generate-sources</phase>
                </execution>
                <execution>
                    <id>process-test</id>
                    <goals>
                        <goal>process-test</goal>
                    </goals>
                    <phase>generate-test-sources</phase>
                    <configuration>
                        <sourceDirectory>./test</sourceDirectory>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>rockpalm.it</groupId>
                    <artifactId>ic2-annotation-processor</artifactId>
                    <version>1.2.1-SNAPSHOT</version>
                </dependency>
            </dependencies>
        </plugin>

Мой build.gradle выглядит так:

plugins {
  id "net.ltgt.apt" version "0.15"
  id 'net.ltgt.apt-eclipse' version '0.15' 
}
dependencies {
    annotationProcessor "rockpalm.it:ic2-annotation-processor:1.2.1-SNAPSHOT"
}
ext { 
    eclipseAptFolder = '.apt_generated'
    eclipseSettingsDir = file('.settings')
}

eclipse {
    jdt.file.withProperties { 
        it['org.eclipse.jdt.core.compiler.processAnnotations'] = 'enabled'
    }
}

tasks.eclipseJdt {
    doFirst {
        def aptPrefs = file("${eclipseSettingsDir}/org.eclipse.jdt.apt.core.prefs")
        aptPrefs.parentFile.mkdirs()

        aptPrefs.text = """\
    eclipse.preferences.version=1
    org.eclipse.jdt.apt.aptEnabled=true
    org.eclipse.jdt.apt.genSrcDir=${eclipseAptFolder}
    org.eclipse.jdt.apt.reconcileEnabled=true
    """.stripIndent()

        file('.factorypath').withWriter {
            new groovy.xml.MarkupBuilder(it).'factorypath' {
                project.configurations.annotationProcessor.each { dep->
                    factorypathentry(
                        kind:'EXTJAR',
                        id:dep.absolutePath,
                        enabled:true,
                        runInBatchMode:false
                    )
                }
            }
        }
    }
}

Но когда я использую проект Gradle > Refresh gradle, он не настраивает .factorypath eclipse с моим процессором аннотаций, он включает его, но без указания фактического процессора в списке процессоров.

Когда я запускаю сборку gradle, я действительно вижу свой сгенерированный код в build/generated/source/apt/main/... my packages/classes, но, поскольку он не включен в eclipse, у меня ничего нет в папке .apt_generated.

EDIT Я получил gradle, чтобы правильно построить factorypath с частью tasks.eclipseJdt build.gradle, но eclipse, похоже, ничего не создает в .apt_generated. Как я могу отлаживать сборку eclipse gradle, чтобы увидеть, что происходит?

Любая помощь приветствуется, спасибо


  • У меня точно такая же проблема. После выполнения gradle eclipse - в eclipse активируется обработка аннотаций, Factory Path также устанавливается правильно. Eclipse ничего не генерирует. gradle build работает из консоли. Вы нашли работу вокруг? 19.12.2018

Ответы:


1

Обычно вам не нужно закрытие конфигурации eclipse из примера плагина, просто используйте:

plugins {
    id 'net.ltgt.apt' version '0.15'
    id 'net.ltgt.apt-eclipse' version '0.15' 
}

dependencies {
    annotationProcessor 'rockpalm.it:ic2-annotation-processor:1.2.1-SNAPSHOT'
}

Выполните gradle eclipse, чтобы настроить заводской путь и обновить проект в Eclipse.

23.03.2018
  • Он по-прежнему ничего не компилирует в .apt_generated 23.03.2018
  • Существует ли файл заводского пути? Вы уверены, что ваш процессор аннотаций работает? Зависимость правильная? 23.03.2018
  • Я уверен, что это работает, так как это хорошо с maven и хорошо с сборкой gradlew, .factory существует, но содержит только <factorypathentry kind="PLUGIN" id="org.eclipse.jst.ws.annotations.core" enabled="false" runInBatchMode="false"/>, поэтому зависимость верна, так как она хорошо работает с maven 23.03.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..