Roberto
Roberto

Reputation: 1450

Move project from Ant to Maven and break it up

I have an existing web project which currently uses Ant. I have tasks that:

and a lot of others.

Separately I have a webservice project which uses the jar built by the previous application. This project uses Maven.

Now what I want to achieve is to move the first project to Maven, break it into core and web, and then move the webservice project into the first one. So the result will be a multi-module project:

Is it possible to move the sources that deal with the web delivery mechanism into the ui module (which will be a war in Maven), or I need to keep the sources in the core?

What would the best approach to do this be?

Should I look into Maven profiles?

I am a novice with Maven, so I am unsure on how to approach this.

Upvotes: 2

Views: 531

Answers (1)

Anthony Accioly
Anthony Accioly

Reputation: 22471

Yes you can achieve what you want with Maven. I would break the modules like this:

Core:

<groupId>com.myapp</groupId>
<artifactId>core</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

UI:

<groupId>com.myapp</groupId>
<artifactId>ui</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<!-- Dependends on core -->
<dependency>
    <groupId>com.myapp</groupId>
    <artifactId>core</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Web service:

<groupId>com.myapp</groupId>
<artifactId>ws</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<!-- Also Dependends on core -->
<dependency>
    <groupId>com.myapp</groupId>
    <artifactId>core</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Main Project:

<groupId>com.myapp</groupId>
<artifactId>myapp</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<modules>
    <module>core</module>
    <module>ui</module>
    <module>ws</module>
</modules>

Then, in Core / UI and Web service you declare myapp as the parent:

<parent>
    <groupId>com.myapp</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

For further info refer to:

Upvotes: 2

Related Questions