Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / maven plugin - узнать target версию компилятора / 10 сообщений из 10, страница 1 из 1
08.12.2016, 12:01
    #39362429
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
Добрый день!

Как узнать targer-version в плагине maven'а?

Код: sql
1.
2.
3.
4.
5.
6.
7.
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <target>8</target>



Вот эту 8ку мне надо вытащить.

PS: "зачем"- вдруг поможет.
Есть maven'овский плагин, который выполняет инструментацию кода с помощью ASM.
Надо правильно выбрать его режим- Opcodes.ASM4 или Opcodes.ASM5
...
Рейтинг: 0 / 0
08.12.2016, 16:44
    #39362753
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
Alexey Tomin,

Объясни ситуацию. Ты пишешь плагин или pom.xml? Тебе в плагине надо прочитать конфиг из мавена? Или pom.xml написать таким образом, чтобы разные плагины запускались?
...
Рейтинг: 0 / 0
08.12.2016, 17:03
    #39362779
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
BlazkowiczAlexey Tomin,

Объясни ситуацию. Ты пишешь плагин или pom.xml? Тебе в плагине надо прочитать конфиг из мавена? Или pom.xml написать таким образом, чтобы разные плагины запускались?

Я правлю плагин. До сих пор он запускал ASM в режиме совместимости.
Но в этом случае ASM падает на классах, содаржащих статические методы интерфейсов (например таких ).
Я б рад просто забить на JDK древнее 8ки, но, блин, заопенсорсили
Хотя и не знаю, использует ли кто, но ломать не хочется.
...
Рейтинг: 0 / 0
08.12.2016, 17:42
    #39362838
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
CompilerMojo разве нельзя достать из MavenPluginManager?
...
Рейтинг: 0 / 0
09.12.2016, 07:35
    #39363100
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
BlazkowiczCompilerMojo разве нельзя достать из MavenPluginManager?

Наверное можно. Но я даже не смог найти, как получить MavenPluginManager в AbstractInstrumentator.
...
Рейтинг: 0 / 0
09.12.2016, 07:35
    #39363101
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
Alexey TominBlazkowiczCompilerMojo разве нельзя достать из MavenPluginManager?

Наверное можно. Но я даже не смог найти, как получить MavenPluginManager в AbstractInstrumentator.

... в AbstractMojo конечно :)
...
Рейтинг: 0 / 0
09.12.2016, 08:18
    #39363112
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
Мда. Решение найдено. Но...
"Появились поддерльные ёлочные игрушки. Они выглядят так же, стоят ак же. Но не веселят"

Внутри наследника AbstractMojo можно написать так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Integer getJdkVersion() {
        MavenProject mavenProject = (MavenProject) getPluginContext().get("project");
        List plugins = mavenProject.getBuild().getPlugins();
        for (Object obj: plugins) {
            Plugin plugin = (Plugin) obj;
            if ("maven-compiler-plugin".equals(plugin.getArtifactId())) {
                Xpp3Dom targetDom = ((Xpp3Dom) plugin.getConfiguration()).getChild("target");
                if (targetDom != null) {
                    String source = targetDom.getValue();
                    if (source != null) {
                        if (source.contains(".")) {
                            source = source.substring(source.lastIndexOf('.') + 1);
                        }
                        return Integer.parseInt(source);
                    }
                }
                return null;
            }
        }
        return null;
    }



Но чёт хрень какая-то получается.
...
Рейтинг: 0 / 0
09.12.2016, 08:47
    #39363120
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
Alexey Tomin,

Так в этом случае target должен быть указан явно. Разве нет? То есть он должен быть в DOM дереве XML. Или я не прав? Что если его там нет? Я этот способ сразу нашел
https://github.com/cstamas/configuration-maven-plugin
, но решил что надежнее у плагина-компилятора спросить.
...
Рейтинг: 0 / 0
09.12.2016, 09:00
    #39363125
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
Alexey Tomin,

А если в своём Mojo объявить точно такой же параметр
Код: java
1.
 @Parameter(property = "maven.compiler.target")


Он случайно не заинъектится тем же значением?
...
Рейтинг: 0 / 0
09.12.2016, 09:40
    #39363150
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven plugin - узнать target версию компилятора
BlazkowiczAlexey Tomin,

Так в этом случае target должен быть указан явно. Разве нет? То есть он должен быть в DOM дереве XML. Или я не прав? Что если его там нет? Я этот способ сразу нашел
https://github.com/cstamas/configuration-maven-plugin
, но решил что надежнее у плагина-компилятора спросить.

Явно указан в проекте, который компилируется этим плагином.
Но так это ж нужно, иначе выбирается древняя версия какая-то.

BlazkowiczА если в своём Mojo объявить точно такой же параметр
Код: java
1.
 @Parameter(property = "maven.compiler.target")


Он случайно не заинъектится тем же значением?

Нет почему-то.
Код: java
1.
 @Parameter(name = "maven.compiler.target")


тоже null
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / maven plugin - узнать target версию компилятора / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]