在Maven中隐式赋值build-> sourceDirectory

时间:2014-01-22 21:00:54

标签: maven pom.xml

如果pom有一个<build>标记但没有明确设置<sourceDirectory>,那么Maven是否会查看根目录中是否有一个src目录,其中包含源代码?我问这个是因为我在项目中继承的一些poms确实有源代码,有些没有<sourceDirectory>。仅当实际源目录不是src(例如src/java)时才需要显式设置该值吗?

以下是来自一个这样的pom的构建定义的示例(注意,这是pom层次结构中的子pom):

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <encoding>UTF-8</encoding>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                    </manifest>
                    <manifestEntries>
                        <Internal-Build-num>1.0-mybuild-SNAPSHOT</Internal-Build-num>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

以下是build中的superpom部分:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-plugin</artifactId>
                <version>1.8.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.7.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.8</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.1</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>native-maven-plugin</artifactId>
                <version>1.0-alpha-7</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <version>1.5</version>
            </plugin>
        </plugins>
    </pluginManagement>

    <plugins>
        <!-- Version numbering -->
        <plugin>
            <artifactId>maven-scm-plugin</artifactId>
            <configuration>
                <!-- TAG format -->
                <tag>${project.artifactId}-${project.version}</tag>
                <pushChanges>false</pushChanges>
            </configuration>
        </plugin>

        <!-- Version numbering -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <configuration>
                <updateDependencies>true</updateDependencies>
                <generateBackupPoms>false</generateBackupPoms>
            </configuration>
        </plugin>
    </plugins>

</build>

1 个答案:

答案 0 :(得分:3)

Maven约为Convention over Configuration,所以是的,你只需指定sourceDirectory,而不是默认值。 java源代码的默认位置是: src/main/java

了解默认项目配置:Introduction to the Standard Directory Layout