如何在Tycho构建的JAR中包含未编译的java文件?

时间:2014-10-28 18:21:55

标签: maven tycho

我有一个带有* .java文件的源根,但我不希望它们被编译。相反,* .java文件应该原样复制到jar中。用例是* .java文件是模板,因此应该按原样保存。

为了实现这一点,我尝试从编译阶段排除源文件夹,我对Tycho OSGi编译器插件的官方文档感到困惑。它说我可以使用参数excludeResources,但我真的不知道如何处理所有这些参数类型。 pom.xml是一个结构化文本文件,而不是源文件,这就是为什么我不理解如何使用java.util.Set作为参数的原因。

我的POM是这样的:

...
<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-compiler-plugin</artifactId>
            <version>0.21.0</extensions>
            <configuration>
                <excludeResources>
                    <!-- Set of folders consisting of a source folder named "res"
                         which should be excluded completely from compilation -->
                </excludeResources>
            </configuration>
        </plugin>
    </plugins>
</build>

这是一种正确的方法吗?如果是,我将如何完成配置?

2 个答案:

答案 0 :(得分:1)

尝试使用此类内容删除任何&#34; res&#34;文件夹和文件:

<plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
                <excludeResources>
                        <excludeResource>**/res</excludeResource>
                </excludeResources>
        </configuration>
</plugin>

或者这个,或者,例如,包括&#34; res&#34;文件夹和排除.jar文件:

<plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
                <includes>
                    <include>res</include>
                </includes>
                <excludes>
                    <exclude>**/*.jar</exclude>
                </excludes>
        </configuration>
</plugin>

或者,排除所有不是&#34; res&#34;文件夹:

<plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
                <excludeResources>
                        <excludeResource>!**/res</excludeResource>
                </excludeResources>
        </configuration>
</plugin>

答案 1 :(得分:0)

如果要从编译中排除整个源根文件夹,只需将其添加到build.properties中的任何src。*条目,请参阅[1]

另一方面,如果要在生成的jar中的源根文件夹中包含* .java文件,请将根文件夹添加到build.properties中的bin.includes列表中。

excludeResources与您的问题无关,因为您链接的文档说:

“非java资源文件的排除过滤器列表,不应复制到输出目录。”

[1] http://eclipse.org/tycho/sitedocs/BuildProperties.html