Notes:
Different ways to run Maven:
http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/
/home/jboss1./m2/repository
<version>1.0</version> is for application, and SNAPSHOT for development
These three tags are mandatory:
<groupId>com.hollandamerica</groupId>
<artifactId>ModularApplicationTutorial</artifactId>
<version>1.0</version>
1) Create a pom.xml to compile the application into a jar called cruiser.jar. Run the test suite.
2) You want to move the development of the booking service to a separate project. Create a separate pom.xml to compile Booking.java, BookingService.java and BookingServiceImpl.java into a separate jar called booking.jar. Have cruiser.jar use booking.jar. Execute cruiser.jar to verify it works correctly.
3) You want cruiser.jar and booking.jar to always have the same version number. Create a parent pom.xml for your 2 projects called booking-parent, and define a property called VERSION. Have booking.jar and cruiser.jar make use of this VERSION property as their version number.
4) You want to compile both cruiser.jar and booking.jar in one single command. Have cruiser.jar and booking.jar be two submodules of booking-parent.
5) Split booking.jar into booking-api.jar (containing the interface) and booking-impl.jar (containing the implementation of the service). Execute cruiser.jar to verify it still works correctly.
6) We want to prevent developers of cruiser.jar to make direct calls to a specific booking-api implementation. Propose a way to remove the direct dependency between cruiser.jar and booking-impl.jar. Implement it.