Please do no do it this way. You will have a very sub-optimal Maven experience if you do it this way. In short you are picking a fight with Maven... you might have won a battle... but Maven is very opinionated and when you pick a fight with it... expect a phone call from Maven...
"I don't know who you are. I don't know what you want. If you are looking for ransom, I can tell you I don't have money. But what I do have are a very particular set of opinions; opinions I have acquired over a decade of existence. Opinions that make me a nightmare for people like you. If you follow the Maven way now, that'll be the end of it. I will not look for you, I will not pursue you. But if you don't, I will look for you, I will find you, and I will kill you." https://www.youtube.com/watch?v=OxBH05hcifw Maven always wins in the end! On 23 April 2014 05:15, Narayanan K <[email protected]> wrote: > Hi Anders > > The codebase is the same. So having 2 separate directories (for > modules) and pom in each of them is not required right ? > > I can have <modules> in parent pom to specify the 2 child poms that > are present in the same project level. Tried below and seems it is > working. > > parent pom will have : > > <modules> > <module>pom-war.xml</module> > <module>pom-jar.xml</module> > <modules> > > In both child poms, > > <parent> > <relativePath>./pom-parent.xml</relativePath> > </parent> > > Currently including the jar artifact dependency in war project cannot > be done due to some restrictions in our development. > > Narayanan > > On Tue, Apr 22, 2014 at 11:37 AM, Anders Hammar <[email protected]> wrote: > >> My new maven project structure will be : > >> > >> . > >> | -- pom.xml (parent pom) > >> | -- pom-war.xml (inherits from parent, generates a war) > >> | -- pom-jar.xml (inherits from parent, generates a jar) > >> > >> There are no modules in the project. All poms are going to be in the > >> root path of the project. > >> > > > > Wrong! > > You should create two modules; one for the jar project and one for the > war > > project. Follow the Maven standards and you can use any of the many > > examples of this on the Internet. > > I believe we haven't pushed the mantra for some time now, so here it > comes: > > Don't fight Maven! > > > > /Anders > > > > > >> > >> 1. Any examples on how to write the parent pom referencing the same > >> codebase for the child poms. > >> Will there be a <module> tag for parent pom. I understand that the > >> packaging for parent pom will be "pom". > >> > >> 2. The child poms will have <relativePath> in <parent> tag as > >> ./pom.xml. Please correct me if this is wrong. > >> > >> Thanks > >> Narayanan > >> > >> > >> > >> > >> > >> Narayanan > >> > >> On Tue, Apr 22, 2014 at 12:38 AM, Stephen Connolly > >> <[email protected]> wrote: > >> > On 22 April 2014 01:18, Narayanan K <[email protected]> wrote: > >> > > >> >> Hi > >> >> > >> >> We have a default pom file with packaging "war" for our codebase. > >> >> > >> >> From the same code base we also want to generate a normal jar and a > >> >> fat jar with dependencies. > >> >> > >> >> Currently solution that has been implemented is another pom-jar.xml > >> >> file that has the packaging as jar and maven-assembly-plugin to > >> >> generate the jar with dependencies. We use mvn install -f > pom-jar.xml. > >> >> > >> >> But we are in a situation where if any new dependency is added to > >> >> pom.xml, we need to add to pom-jar.xml as well as it is the same > >> >> codebase. > >> >> > >> >> To avoid this we thought of couple of solutions - > >> >> > >> >> 1. Add maven-jar-plugin and maven-assembly-plugin to the default pom > >> >> with packaging war - so it generates a war file, a normal jar file > and > >> >> fat jar out of the same pom. So we can do away with the pom-jar.xml. > >> >> > >> >> Not sure if this is a good solution. We tried this, but this is > >> >> working well only in maven 3.0.4. The assembly plugin is not working > >> >> well with Maven 2 (which is in our build environment) while > generating > >> >> the fat jar. > >> >> > >> >> 2. Have a parent pom and put all the dependencies and plugins in that > >> >> and have 2 child poms in the same codebase with different names > >> >> inherit from parent pom, one that has packaging of war that generates > >> >> war file and the other child pom has packaging jar with maven > assembly > >> >> plugin to generate both normal and fat jar. And all new dependencies > >> >> need to be added only to parent pom. > >> >> > >> >> This solution will make us have 3 pom files in codebase, doesnt look > >> >> very elegant, > >> > > >> > > >> > actually depends on your point of view. To me this is the more elegant > >> > solution as you clearly see the relationship between inputs (pom.xml) > and > >> > outputs (artifacts, e.g. jars wars, etc) > >> > > >> > > >> >> but will solve our dependency management issues between > >> >> the 2 packaging. > >> >> > >> >> > >> >> Are these good solutions? Is there any other good solution available > >> >> for this scenario ? > >> >> > >> >> > >> >> Regards > >> >> Narayanan > >> >> > >> >> --------------------------------------------------------------------- > >> >> To unsubscribe, e-mail: [email protected] > >> >> For additional commands, e-mail: [email protected] > >> >> > >> >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
