【问题标题】:How to make Maven's antrun task to generate sources from AIDL files?如何让 Maven 的 antrun 任务从 AIDL 文件生成源?
【发布时间】:2013-07-22 01:57:34
【问题描述】:

我正在尝试将 Ant 任务转换为 Maven 的 antrun 插件任务。

Ant 任务是这样的:

<aidl executable="${aidl}"
    framework="${project.target.framework.aidl}"
    libraryBinAidlFolderPathRefid="project.library.bin.aidl.folder.path"
    genFolder="${gen.absolute.dir}"
    aidlOutFolder="${out.aidl.absolute.dir}">
    <source path="${source.absolute.dir}"/>
</aidl>

此代码来自 android sdk build.xml 文件。

知道它在 Maven antrun 插件中应该是什么样子吗?

【问题讨论】:

    标签: android maven ant aidl maven-antrun-plugin


    【解决方案1】:

    我正在发布我现在的方式,以防有人正在寻找相同的解决方案。

    请注意,代码不干净且不可移植。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <id>generate-aidl</id>
          <phase>generate-sources</phase>
          <configuration>
            <target name="convert-aidl-files">
              <property name="aidl" location="${env.ANDROID_HOME}/build-tools/android-4.2.2/aidl${exe}"/>
              <property name="framework.aidl" location="${env.ANDROID_HOME}/platforms/android-17/framework.aidl"/>
              <apply executable="${aidl}" parallel="false">
                <arg value="-I${src.dir}"/>
                <arg value="-p${framework.aidl}"/>
                <arg value="-o${gen.dir}"/>
                <srcfile/>
                <fileset dir="${src.dir}">
                  <include name="**\*.aidl"/>
                </fileset>
              </apply>
            </target>
          </configuration>
          <goals>
            <goal>run</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    
    • maven-antrun-plugin 是执行 ant 任务的 maven 插件。
    • aidl 属性指向 Android SDK 构建工具中的aidl.exe。 这部分脚本使用硬编码值。更好的方法是动态发现位置,但不幸的是我还没有找到方法。
    • framework.aidl 属性指向 Android SDK 中的 framework.aidl 文件。 这部分脚本使用硬编码值。更好的方法是动态发现位置,但不幸的是我还没有找到方法。
    • apply ant 任务用于执行以fileset 作为输入参数的aidl.exe。
    • srcfile 用于提及apply 任务的输入文件。 srcfile 为空,但我使用下面的 fileset 仅过滤扩展名为 *.aidl 的文件。

    【讨论】:

      【解决方案2】:

      使用android-maven-plugin更方便,然后:

      mvn clean android:generate-sources
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        • 2022-02-03
        • 2022-08-22
        相关资源
        最近更新 更多