How to configure custom maven project structure

I know that typically maven structure is like this:

 pom.xml
 src
   - main
   - web
    - WEB-INF

However, I have a project which has the following structure

  • How to let Jenkins git commit only if there are changes?
  • git submodules as part of a build
  • Dynamic version from git with go get
  • 404 error when building Git project in TFS2013
  • How do I configure the SVN HTTP proxy from the command line?
  • Queue build for non-default branch with git and VS
  • src
      - main
    web
      - WEB-INF
    

    The latter of the two above currently does not use maven. I’ve started using maven for this project locally by making the structure conform to the maven standard. However, I now want to automatically build this project from jenkins by getting it out of the source control (svn). So I would like to just add a pom.xml which is aware of the fact that web isn’t inside src

    Is this possible to do with maven?

  • groovy.lang.MissingPropertyException: No such property: manager for class: Script1
  • How to simultaneously deploy Node.js web app on multiple servers with Jenkins?
  • Jenkins pipeline - file not found
  • Disable automatic code rearrangement in Intellij IDEA
  • Jenkins configuration and security issues
  • Python script to generate JUnit report from another testing result
  • 2 Solutions collect form web for “How to configure custom maven project structure”

    You can configure the maven-war-plugin to use another warSourceDirectory but as Jeff Storey explains in his answer it is really not recommended.

    This is how you would do it:

    <project>
        ...
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <warSourceDirectory>web</warSourceDirectory>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        ...
    </project>
    

    One of several problems is for example that the maven-jetty-plugin will not run out-of-the-box. It will by default look in src/main/webapp so that has to be configured.

    You might not use the maven-jetty-plugin but you get the idea.

    Using the maven war plugin properties, you can set the warSourceDirectory property http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html (I’m not sure exactly what problems you’re having, so this may or may not solve your specific problem).

    However, maven is very opinionated and I would strongly recommend using the expected maven structure. Other plugins may give you unexpected problems down the road, and maven life is generally a lot easier when you follow their conventions.

    Git Baby is a git and github fan, let's start git clone.