从Maven中的Android库jar中排除BuildConfig.class和R.class

时间:2013-02-28 04:38:36

标签: java android maven build jar

我正在使用Maven Android插件使用apklib打包来构建我的Android库。这会产生库的apklib存档,所以我也使用Maven jar插件来生成可以在应用程序中使用的jar工件。

我的问题是,BuildConfig.classR.class被包含在jar中,我不想要(实际上我想在gen中完全排除任何内容)。我一直在努力为他们制定exclude规则,但没有取得任何成功。这是我在我的pom中使用的jar插件配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>              
                <excludes>
                    <exclude>**/BuildConfig.java</exclude>
                    <exclude>**/R.java</exclude>
                </excludes>
            </configuration>
        </execution>
    </executions>
</plugin>

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这里的技巧是将您的配置应用于构建生命周期的default-jar阶段,并排除.class个文件,而不是.java个文件。您可以通过将<id>default-jar</id>添加到执行中来执行此操作,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <id>default-jar</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>  
                <excludes>
                    <exclude>**/BuildConfig.class</exclude>
                    <exclude>**/R.class</exclude>
                </excludes>
            </configuration>
        </execution>
    </executions>
</plugin>

您可能还想要排除班级R$attr.classR$drawable.classR$layout.classR$string.class