Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use Maven without src/main/java

Tags:

java

spring

maven

Is there a way to use Maven to build Java projects without all the unnecessary directories?

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

It looks like Maven expects

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

I would like to create a Maven project with a pom.xml file, that looks more like:

src/
  package1/
  package2/
  package3/
  packageX/

Is this possible?

Here is the pom.xml file I am using:

<?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>
like image 382
Alexander Mills Avatar asked Dec 19 '22 08:12

Alexander Mills


1 Answers

I suggest you follow the src/main/java structure because of the benefits (look here) it provide, but in case, if you have to change the folder structure for any other reasons to src (or any folder), then you can do that by specifying the sourceDirectory in your pom.xml as shown below:

<build>
    <sourceDirectory>src</sourceDirectory>
</build>
like image 182
developer Avatar answered Dec 28 '22 03:12

developer