使用没有src / main / java的Maven

时间:2017-03-26 00:13:56

标签: java spring maven

有没有办法在没有所有不必要的目录的情况下使用Maven构建Java项目?

https://spring.io/guides/gs/maven/

看起来Maven希望

src/
  main/
     java/
        package1/
        package2/
        package3/
        packageX/

我想创建一个带有pom.xml文件的Maven项目 看起来更像是:

src/
  package1/
  package2/
  package3/
  packageX/

这可能吗?

这是我正在使用的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.springframework</groupId>
   <artifactId>gs-maven</artifactId>
   <packaging>jar</packaging>
   <version>0.1.0</version>
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
               <execution>
                  <goals>
                     <goal>java</goal>
                  </goals>
               </execution>
            </executions>
            <configuration>
               <mainClass>hello.HelloWorld</mainClass>
               <arguments>
                  <argument>argument1</argument>
               </arguments>
               <systemProperties>
                  <systemProperty>
                     <key>myproperty</key>
                     <value>myvalue</value>
                  </systemProperty>
               </systemProperties>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.1</version>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>shade</goal>
                  </goals>
                  <configuration>
                     <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                           <mainClass>hello.HelloWorld</mainClass>
                        </transformer>
                     </transformers>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

2 个答案:

答案 0 :(得分:5)

我建议你遵循src/main/java结构,因为它提供了好处(看here),但是如果你因为任何其他原因需要将文件夹结构更改为src (或任何文件夹),然后您可以通过在sourceDirectory中指定pom.xml来执行此操作,如下所示:

<build>
    <sourceDirectory>src</sourceDirectory>
</build>

答案 1 :(得分:3)

The Maven docs声明这是一个建议,如果布局不可选,可以通过项目描述符绕过它。

  

请尽量遵守这种结构;但是,如果您不能通过项目描述符覆盖这些设置。