Как отключить функцию «Видимый только для тестовых источников» в Eclipse Photon?

Недавно выпущенный Eclipse Photon имеет функцию, позволяющую автоматически отображать библиотеки с областью действия, установленной на test, с атрибутом «Видимо только для тестовых источников», установленным на «да», и это нельзя отключить.

Отображение тестовых зависимостей Maven

Проблема, с которой я сталкиваюсь из-за этого, ни в одном из наших проектов Eclipse в настоящее время не имеет тестовой исходной папки, помеченной как тестовая папка. Будучи корпоративной средой, я не могу идти вперед и просто обновлять все нечетные сотни проектов. Кроме того, Eclipse Photon еще официально не поддерживается в нашей организации.

Итак, это означает, что я получаю тысячи ошибок компиляции во всех тестовых папках, поскольку их зависимости теперь доступны только для папок, помеченных как «тест».

Как отключить эту функцию?


person AppleGrew    schedule 04.07.2018    source источник
comment
Я не думаю, что это можно отключить. Но если вы нажмете Alt+F5, тестовые исходные папки настроены правильно. Совместное использование файла .classpath, в котором хранится эта информация, не должно причинить вреда пользователям более старых IDE Eclipse. Если файл .classpath находится под контролем версий, файл рано или поздно необходимо обновить.   -  person howlger    schedule 05.07.2018


Ответы (2)


См. раздел Тестовые источники статьи. "Проект Eclipse Photon — новое и интересное":

...для проектов и библиотек есть атрибут Виден только для тестовых исходников. Этот параметр также существует для контейнеров путей к классам, и если для одного из них установлено значение «Да», это значение будет использоваться для всех содержащихся библиотек и проектов.

Вы можете включить или отключить этот параметр в {ваш проект} > Свойства в разделе Путь сборки Java > Источник, выбрав запись Содержит тестовые источники и нажав кнопку Переключить:

введите здесь описание изображения

Итак, вы уже были на правильном экране для решения проблемы; просто перейдите на вкладку Источник и установите для параметра Содержит тестовые источники значение Нет.

person skomisa    schedule 04.07.2018
comment
Да, я заметил это, и я не хочу делать именно это. Это изменит файл .classpath, который контролируется версией. Я не хочу обновлять конфигурации проектов других команд. - person AppleGrew; 05.07.2018
comment
OK. Я неправильно прочитал ваш пост и подумал, что вы только спрашиваете, как отключить настройку, но на самом деле вы хотите полностью отключить новую функцию, верно? Если это невозможно сделать, и я не понимаю, как это возможно, тогда проверьте, какие изменения вносятся в конфигурацию проекта в Photon (на что вам, вероятно, следует потратить некоторое время в любом случае). Как предполагает Хаулгер, изменения могут быть обратно совместимыми, поэтому вы можете разрешить свои изменения Photon в системе контроля версий. (т. е. вы будете обновлять конфигурации проекта, используемые другими командами, но эти обновления безвредны с их точки зрения.) - person skomisa; 05.07.2018
comment
При установке вручную плагин m2e Maven просто вернет эту опцию при перестройке (Alt+F5). - person Terran; 19.07.2018

Я думаю, что вы на самом деле используете maven, и тестовые зависимости автоматически устанавливаются как «Видимые только для тестовых источников» как часть контейнера пути к классам m2e «Maven Dependencies».

Если обновление файлов .classpath (щелкнув проект правой кнопкой мыши и выбрав «Maven» > «Обновить проект») не подходит для вас, вы можете понизить версию m2e-плагина, удалив его и установив более старую версию. из http://download.eclipse.org/technology/m2e/releases/ (Я убедился, что 1.8.3.20180227-2137 работает).

Обновление: в версии m2e 1.9.1, которую можно установить в Eclipse Photon с помощью функции «Проверить наличие обновлений» и которая включена в Eclipse 2018-09 (преемник Photon), можно отключить тестовое разделение путей к классам. установив для свойства maven m2e.disableTestClasspathFlag значение true. Вы можете сделать это либо на уровне проекта, установив его в отдельных pom.xml файлах, либо для всего рабочего пространства, добавив его как свойство активного профиля пользователя settings.xml.

Если у вас еще нет пользователя setting.xml, создайте его со следующим содержимым и выберите его в Eclipse в Preferences > Maven > Users Settings как User Settings. Затем щелкните правой кнопкой мыши проекты и выберите «Maven» > «Обновить проект» для всех проектов.

 <?xml version="1.0" encoding="UTF-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <profiles>
            <profile>
                <id>default</id>
                <properties>
                    <m2e.disableTestClasspathFlag>true</m2e.disableTestClasspathFlag>
                </properties>
            </profile>
        </profiles>
        <activeProfiles>
            <activeProfile>default</activeProfile>
        </activeProfiles>
    </settings>
person Till Brychcy    schedule 05.07.2018
comment
Хорошо. Теперь я просто перешел на сам Eclipse Oxygen. - person AppleGrew; 05.07.2018
comment
Не работает. Плагин maven просто игнорирует папки src/test/ в некоторых проектах/пакетах. Всякий раз, когда выполняется Maven › Update Project, для него снова устанавливается значение «Нет». Плагин полностью сломан. Единственный вариант - вернуть все Eclipse обратно в Oxygen (= новая установка). Эти люди вообще тестируют свои обновления? - person Terran; 19.07.2018
comment
@Terran, я не уверен, что ты пробовал. Старая версия m2e ничего не знает о настройках, связанных с тестами, поэтому как исходные папки, так и все зависимости в контейнере зависимостей Maven рассматриваются как основной код, поэтому компиляция такая же, как в Oxygen. - person Till Brychcy; 19.07.2018
comment
m2e должен определить, какая папка src/main, а какая src/test. По крайней мере, из ‹testSourceDirectory› из pom.xml. Вы не можете выпустить основную версию IDE, которая больше не компилирует ваш код без возможности исправить это. - person Terran; 20.07.2018
comment
Обратите внимание, что текущий вопрос от пользователя, у которого все работает, но он не хочет обновлять файлы .classpath. Кажется, у вас есть проблема, когда что-то не работает. m2e использует собственный код maven для запроса pom, поэтому вопрос в том, почему он не работает. Если вам нужна помощь и вы можете предоставить пример проекта, показывающий, что не работает, создайте конкретный вопрос здесь или лучше сообщите об ошибке по адресу bugs.eclipse.org и дайте ссылку здесь. - person Till Brychcy; 20.07.2018