如何从一个目录中排除源文件,并在使用Maven编译期间从另一个目录包含相同的文件?

时间:2013-03-11 08:32:10

标签: java maven compilation

在我的项目中,我使用两个源目录(通过build-helper-maven-plugin)。我有一个课程,在他们两个。所以,当我尝试运行“mvn compile”时,我得到“Class is duplicatelicated”错误。 我无法删除其中一个文件 - 它们都必须存在,我需要通过调整pom.xml来解决这个问题 我看过这个主题:

但解决方案对我不起作用。 我已经意识到我无法使用maven-compiler-plugin部分指定文件的绝对路径 - 只有源目录根目录的相对路径。所以,我既可以排除它们也可以同时包含它们。

的pom.xml:

<project>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>child-project</artifactId>
    <packaging>war</packaging>
    <name>child-project</name>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <parent>
        <groupId>com.project</groupId>
    <artifactId>project</artifactId>
    <relativePath>../pom.xml</relativePath>
    <version>1.0</version>
    </parent>

    <build>
        <finalName>child-project</finalName>
        <!-- First source directory. Contains A.java file i need to exclude-->
        <sourceDirectory>${basedir}/src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                   <source>1.6</source>
                   <target>1.6</target>
                   <!-- doesn't work
                   <excludes>                       
                       <exclude>${basedir}/src/com/project/A.java</exclude>                     
                   </excludes>
                   -->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals><goal>add-source</goal></goals>
                        <configuration>
                            <sources>
                                <!-- Second source directory. Contains A.java file i need to include-->
                                <source>${custom-directory}/webapp/src</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>           
            ...
        </plugins>
    </build>
</project>

0 个答案:

没有答案