Maven Android компилирует несколько исходных каталогов - PullRequest
1 голос
/ 09 сентября 2011

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

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

Используя архетип, он создал два проекта - проект и проект-это (тесты), в корневом каталоге есть pom.xml, а в каталогах проекта и проекта-это 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, вот pastie .

1 Ответ

2 голосов
/ 09 сентября 2011

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

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

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

Можете ли вы в любом случае показать свой вывод -X, чтобы показать, что плагин 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.

...