2 WARs in maven EAR build - maven

I am new to maven and as a matter of fact new to the build tools and process or should i say the whole web structure. I have a slight problem for which i need help.
I am going to make a web project which on compiling/deployment will give a war file. And i have a separate project for which the war(just the war file after bundling the project) file will be given to me.
Now my requirement is to make a EAR file comprising both my project bundle and also including the war of the other completed project. I need to use maven for this.
I know the multi-module projects can be created using maven. But i am not sure how it will handle isolated war file. I mean for my project it will have the whole structure , artifactId and groupId. What about the other war how will it be handled.
I know this may be a novice question. But can someone please help.
Thanks

The way this would typically be handled would be making the isolated WAR file a dependency. Install it in your local maven repo and just list it as a dependency in the POM for your EAR module. Also, making your WAR project a module under your EAR project would handle the WAR that you're actually building.

Related

building a jar library from a war project using maven?

We have a EAR project which has a WAR project. Maven is used, so pom.xml. As typical of any project, this project also contains a big feature (say Job Scheduling "JBS") among many other features. As it is planned to retire this whole project in the near future, it is discouraged heavily to spend much on working on this project (whether bugs or enhancements).
Therefore, for the sake of running the (JBS) feature as a separate application, the whole EAR project was duplicated (also to save time/cost). As a result, all the Java packages and classes (necessary for JBS project) were duplicated. In this situation, if we update one or more classes in the main project, this (JBS) feature project/application gets outdated (and needs update).
The fact is that this JBS feature project ONLY requires many packages of Java classes (from the main EAR-WAR project), and do not require 99% of the web modules and others. I am removing all the unnecessary things from JBS project. Then I would like to create a JAR library with all the java classes, so JBS project can have a dependency on this JAR.
I do not know if it is a good idea to separate these classes out of the main project (to create another Java project). I would like to continue to have these classes as part of the main project. Then, it will be good, as and when one or more of these classes are changed, a new version of the JAR will be generated (right away). And the JBS project would then make use of this updated JAR.
How can we accomplish this? I understand, through maven, we can do a build/package jar/war/ear on a project of that nature. I am not an expert with maven (and did not learn it systematically).
But, is there a way to create one or more JARs additionally from inside WAR pom.xml? In other words: I mean pom.xml of WAR will create a WAR. In addition to creating a WAR, can maven help create additional JAR? Or can maven create two packages out of one pom.xml?
Or should I create a separate module in the main project with all these packages/classes, and have its own pom.xml to generate the necessary JAR? For this, most probably I need to modify the structure of the main project. I would like to avoid this unless there is no way out.
Can you advice?
It seems like the best thing for you would be to create a multi-module project that both contains the JAR and the other project. This way, you can easily change/build them together, but you create separate artifacts.

How can I get only the JAR file?

I had two projects using the same code for a functionality. To avoid that, I isolated this code in a new project so the two projects can use this functionality by indicating the dependency in their pom.xml file. So, once that I created the new project with the repeated, I save in innersource as a maven repository.
In the pom.xml file of both projects I used tag with and inside to indicate where is the repository. When I update the projects the dependency is downloaded from the remote repository and it works, but when I saw the Maven dependencies section of my project, where all needed JARs are, I found that is not only downloaded the JAR file of the third project, but there is a folder with the project.
So how I can get the JAR and not a folder?
Thank you so much for your help!

How to post process a war with maven?

I am wondering a nice way of post processing a war produced with maven to add libs to it.
I have a war that is generated by maven. This war has many dependencies with scope provided because the application server is meant to provide them through shared libraries (don't blame me for shared libs...)
I am trying to change this behaviour and to have a standalone war. I'd like to find a way to generate a war that contains those additional jar.
I have tried with an assembly to add the jars and repack it but w/o any success. Mainly because I didn't find a way to add dependencies from maven within an assembly.
Any point, suggestions or anything else that could help ?

Maven: Checkout a SVN Repository, compile, package into a jar and add as a Dependency

We have a web application in which we are using Ant as a build tool. There is a urgent requirement to create web services (API) and this will be a separate project. For now, to make it available to our customers we have decided to use our web application and remove all unnecessary files (like velocity files, properties, xml etc) and make a jar of it. This jar will be used in our web service project.
In Maven, I want to checkout my web application svn branch, compile it, make a single jar of it and add as a dependency in my project. Is this possible? If yes, then please show me the way.
I'm new to Maven please explain your answers with more detail.
Thanks.
Short Answer
Get your .war deployed into a Maven Repository (local or remote) from your ant build
Child Projects will embed your .war as a dependency, creating a war with your custom services + your original .war file
It is advised that those Child Projects turn into an Archetype, so creating custom services gets easier
Long Answer
From your SCM, you could modify your build.xml file and use Maven Tasks for Ant.
In particular, the install and deploy examples are helpful in order to guide you on deployment your .war into a Maven repository (local or remote)
Then, a .war artifact (when accessible from a Repository) is able to be consumed from other .war applications.
Look into the maven-war-plugin Overlays Feature. In particular, this answer offers you more advice:
combine different maven web-projects into a single project
Other than that, I suggest you could also combine with Maven Archetypes (they're now easier than ever), so you could create skeleton projects for your webservices, already depending on this .war dependency.

Using Maven 3, how do I overwrite a file defined in one of the dependencies?

I have a multi-module Java EE application including a module for the web archive.
The WAR declares a dependecy on another WAR which provides a general purpose CSS.
I'd like to overwrite the provided CSS in my local WAR to add some specific behaviour.
So I copied the CSS from the dependency and placed it in the very same directory in my local WAR (being src/main/webapp/css/file.css).
I assumed Maven to merge these files, so my changes eventually become visible.
However, after deploying the application I still end up with the general purpose version provided by the dependency.
Is there any solution / plugin to fix this?
What you probably need is Maven's overlay feature which can merge 2 war projects:
http://maven.apache.org/plugins/maven-war-plugin/overlays.html

Resources