【问题标题】:Maven android compiling multiple source directoriesMaven android编译多个源目录
【发布时间】:2011-09-09 13:30:08
【问题描述】:

我使用archetype 创建了一个 maven android 项目。我想在我的项目中集成mirah 源文件。所以我将提到的插件here 添加到我的 pom.xml 中。我为插件设置了配置部分,将源目录指向 src/main/mirah。

但是当我运行mvn compile 时,它只会编译 src/main/java 中的源代码。我尝试使用mvn -X compile 运行它来尝试调试问题,但我找不到与mirah 或mirah-maven-plugin 相关的任何内容。

使用它创建了两个项目的原型 - project 和 project-it (tests) ,在根目录中有一个 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

【问题讨论】:

    标签: java android maven maven-3 mirah


    【解决方案1】:

    这个页面https://github.com/calavera/maven-mirah-plugin#readme 说mirah 插件扩展了默认的编译器插件。所以这表明构建助手插件适用于多个源目录,如果它适用于默认编译器插件。

    查看mirah plugin,您可能不需要自己指定sourceDirectoryoutputDirectory,因为您似乎使用的是默认值。

    -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 用户,所以我不知道错误的含义。

    【讨论】:

    • +1 用于 mvn org.mirah.maven..:compile 建议。它下载了插件并尝试编译 mirah 源。 mvn -X compile 的输出在此pastie 中,因为它有点长。现在我只需要弄清楚如何使用mvn compile 来调用它。
    • 抱歉没有看到更新。是的,maven-mirah-plugin 本身就可以正常工作。我只是无法弄清楚如何让它与 Java 代码一起工作。如果我没有看到任何其他回复,我会批准这个答案。至少它让我更近了一步,谢谢。
    • 嗯,如果我是你,我会把你的项目剥离到最基本的部分,然后再试一次,每次添加一个东西,直到它停止工作。
    • 好吧,它被削得一干二净。我创建了 android 原型,没有添加其他代码或配置,然后添加了 maven 插件,仅此而已。也许我可以从一个工作的 maven-mirah 版本开始,然后尝试将 android 和 java 添加到它。我会回帖说明情况。
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 2012-04-08
    • 2012-07-05
    • 2014-03-09
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多