有没有办法在没有所有不必要的目录的情况下使用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>
答案 0 :(得分:5)
我建议你遵循src/main/java
结构,因为它提供了好处(看here),但是如果你因为任何其他原因需要将文件夹结构更改为src
(或任何文件夹),然后您可以通过在sourceDirectory
中指定pom.xml
来执行此操作,如下所示:
<build>
<sourceDirectory>src</sourceDirectory>
</build>
答案 1 :(得分:3)
The Maven docs声明这是一个建议,如果布局不可选,可以通过项目描述符绕过它。
请尽量遵守这种结构;但是,如果您不能通过项目描述符覆盖这些设置。