Maven Android компилирует несколько исходных каталогов

Я создал Maven Android проект с использованием этого архетипа. Я хочу интегрировать исходные файлы mirah в мой проект. Поэтому я добавил плагин, упомянутый здесь, в мой pom.xml. Я установил раздел конфигурации для плагина, чтобы указать исходный каталог на src/main/mirah.

Но когда я бегу mvn compile он только компилирует исходники внутри src/main/java. Я пытался запустить его с mvn -X compile попытаться отладить проблему, но я не могу найти там ничего, связанного с mirah или mirah-maven-plugin.

Используя архетип, он создал два проекта - project и project-it (тесты), в корневом каталоге есть pom.xml, а в каталогах project и it - pom.xml. Я попробовал вышеуказанные конфигурации как в корневом каталоге, так и в pom.xml проекта.

Я сталкивался с этим вопросом, связанным с использованием плагина build-helper, но я не знаю, поможет ли он в моем случае. Так как мой плагин mirah вообще не вызывается.

Это правильный способ сделать то, что я пытаюсь сделать? Любая помощь в настройке, или указатель на то, как устранить неполадки, будет высоко ценится.

Соответствующий бит моего pom.xml

<plugin>
   <groupId>org.mirah.maven</groupId>
   <artifactId>maven-mirah-plugin</artifactId>
   <version>1.0</version>
   <configuration>
       <sourceDirectory>src/main/mirah</sourceDirectory>
       <outputDirectory>target/classes</outputDirectory>
       <bytecode>true</bytecode>
       <verbose>false</verbose>
   </configuration>
   <executions>
      <execution>
         <phase>compile</phase>
         <goals><goal>compile</goal></goals>
      </execution>
   </executions>
</plugin>

Отредактировано согласно ответу ниже.

Я добавил каталог с исходным кодом, используя плагин build-helper, и я могу получить исходные тексты mirah для компиляции, используя mvn org.mirah.maven:maven-mirah-plugin:1.0:compile из ответа ниже. Но mvn compile все еще только компилирует исходники в src / main / java, а не в src/main/mirah.

Для тех, кто заинтересован в выводе mvn -X compile вот пирожок

1 ответ

Решение

На этой странице https://github.com/calavera/maven-mirah-plugin говорится, что плагин mirah расширяет плагин компилятора по умолчанию. Таким образом, можно предположить, что плагин сборки помощника будет работать для нескольких исходных каталогов, если он работает для плагина компилятора по умолчанию.

Глядя на плагин Mirah, вам, вероятно, не нужно указывать sourceDirectory а также outputDirectory себя, так как кажется, что вы используете значения по умолчанию.

-X Параметр switch не будет напрямую влиять на плагин mirah, так как он не выполняет никакой трассировки (выше того, что делает плагин компилятора по умолчанию).

Можете ли вы показать свой -X в любом случае, чтобы показать, что плагин mirah не вызывается?

Кроме того, вы можете создать плагин Mirah самостоятельно и добавить трассировку. Это не кажется сложным плагином.

Что происходит, когда вы пытаетесь вызвать плагин напрямую? Например

mvn org.mirah.maven:maven-mirah-plugin:1.0:compile

РЕДАКТИРОВАТЬ:

Пробовал сам, и это работает для меня (под "работами" я имею в виду плагин вызывается - моя сборка фактически не работает).

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>temp</groupId>
    <artifactId>temp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.mirah.maven</groupId>
                <artifactId>maven-mirah-plugin</artifactId>
                <version>1.0</version>
                <configuration>
                    <bytecode>true</bytecode>
                    <verbose>true</verbose>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

С этим выводом:

D:\dev\workspaces\3.6\temp>mvn compile
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - temp:temp:jar:0.0.1-SNAPSHOT
[INFO]    task-segment: [compile]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [mirah:compile {execution: default}]
[INFO] No sources to compile
Parsing...
  D:\dev\workspaces\3.6\temp\src\main\mirah/test.mirah
Inferring types...
* [Mirah::Typer] Learned local type under #<Mirah::AST::StaticScope:0xbc5245> : a = Type(int)

... ETC ...

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Unknown error - Unknown Error (20047) - D:\dev\workspaces\3.6\temp\target\classes\D:

Я не знаю, что означает ошибка, поскольку я не пользователь mirah.

Другие вопросы по тегам