我已经使用此archetype创建了一个Maven android项目。我想在项目中集成mirah源文件。所以我在我的pom.xml中添加了提到here的插件。我为插件设置了配置部分,以将源目录指向src / main / mirah。
但是当我运行mvn compile
时,它仅编译src / main / java中的源代码。我曾尝试使用mvn -X compile
运行它来尝试调试问题,但在那里找不到与mirah或mirah-maven-plugin相关的任何内容。
使用原型,它创建了两个项目-project和project-it(测试),根目录中有pom.xml,而project和project-it目录中有pom.xml。我已经在根目录以及项目的pom.xml中尝试了上述配置。
我遇到了与使用build-helper plugin有关的问题,但我不知道它是否对我有帮助。由于我的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 plugin添加了源目录,并且能够从以下答案中使用
mvn org.mirah.maven:maven-mirah-plugin:1.0:compile
来编译mirah源。但是mvn compile
仍然仅在src / main / java中编译源代码,而不在src / main / mirah中编译源代码。对于任何对
mvn -X compile
输出感兴趣的人,这里是pastie。 最佳答案
本页https://github.com/calavera/maven-mirah-plugin#readme说mirah插件扩展了默认的编译器插件。因此,这表明如果默认的编译器插件可以使用构建帮助器插件,则它可以用于多个源目录。
查看mirah plugin,您可能不需要自己指定sourceDirectory
和outputDirectory
,因为您似乎正在使用默认值。-X
开关不会直接对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用户。