Pregunta

He creado un proyecto Maven Android usando este arquetipo. Quiero integrar Mirah Archivos de origen dentro de mi proyecto. Entonces agregué el complemento mencionado aquí a mi pom.xml. Configuro la sección de configuración para que el complemento apunte el directorio de origen a SRC/Main/Mirah.

Pero cuando corro mvn compile Solo compila las fuentes dentro de SRC/Main/Java. He intentado ejecutarlo con mvn -X compile Para tratar de depurar el tema, pero no puedo encontrar nada relacionado con Mirah o el Mirah-Maven-Plugin allí.

Utilizando el arquetipo que creó dos proyectos: proyecto y proyecto-IT (pruebas), hay un pom.xml en el directorio raíz, así como un pom.xml en los directorios de proyecto y proyecto-IT. He probado las configuraciones anteriores tanto en el directorio raíz como en el Pom.xml de Project.

Me he encontrado con esta pregunta relacionada con el uso del complemento de compilación Pero no sé si ayudará en mi caso. Dado que mi complemento Mirah no se llama en absoluto.

¿Es esta la forma correcta de hacer lo que estoy tratando de hacer? Cualquier ayuda en la configuración o puntero a cómo solucionar esto sería muy apreciada.

El bit relevante de mi 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>

Editado según la respuesta a continuación.

He agregado el directorio de origen usando el complemento de compilación Y puedo hacer que las fuentes de Mirah compilen usando mvn org.mirah.maven:maven-mirah-plugin:1.0:compile de la respuesta a continuación. Pero mvn compile Todavía solo compila las fuentes en SRC/Main/Java y no SRC/Main/Mirah.

Para cualquier persona interesada en la salida de mvn -X compile aquí está el pastor.

¿Fue útil?

Solución

Esta página https://github.com/calavera/maven-mirah-plugin#readme dice que el complemento Mirah extiende el complemento compilador predeterminado. Por lo tanto, esto sugeriría que el complemento Build Helper funcionaría para múltiples directorios de origen, si funciona para el complemento compilador predeterminado.

Mirando a la Mirah Plugin, probablemente no necesite especificar sourceDirectory y outputDirectory usted mismo, como parece que está utilizando los valores predeterminados.

los -X Switch no tendrá ningún impacto en el complemento Mirah directamente, ya que no hace ningún rastreo (por encima de lo que hace el complemento del compilador predeterminado).

¿Puedes mostrar tu -X ¿Salida de todos modos para mostrar que el complemento de Mirah no se invoca?

Alternativamente, puede construir el complemento de Mirah tú mismo y agregar rastreo. No parece un complemento complicado.

¿Qué sucede cuando intentas invocar el complemento directamente? P.ej

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

EDITAR:

Lo probé yo mismo y esto funciona para mí (por 'obras', quiero decir que el complemento se invoca: mi construcción realmente falla).

<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>

Con esta salida:

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:

No sé qué significa el error, ya que no soy un usuario de Mirah.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top