We've included -omod.jar mostly because the module was not divided properly in -api and -omod. Normally, you should include -api.jar only. See the basicmodule in svn or the updated module archetype [0] on how to properly divide modules in api and omod. Suggestions and improvements are welcome.
[0] - https://wiki.openmrs.org/display/docs/Using+the+Module+Maven+Archetype -Rafal On 10 January 2012 16:59, Friedman, Roger (CDC/CGH/DGHA) (CTR) <[email protected]> wrote: > I have been experiencing similar problems and working them through with > Rafa. > > > > Mark, I think it was decided that the two artifacts to be used as > dependencies would be module-api.jar and module-omod.jar, both required. > Module.omod is solely for use by the module manager. I think you should > consider whether it serves any purpose to maintain the -api, <unnamed> > artifact naming scheme, such as the behavior of the mavenizer. > > > > I think that all three artifacts need to go in the openmrs maven repository. > I think the module downloader ought to have a checkbox to download the -api > and -omod as well as the .omod. > > > > From: [email protected] [mailto:[email protected]] On Behalf Of Ben Wolfe > Sent: Tuesday, January 10, 2012 3:06 AM > > > To: [email protected] > Subject: Re: [OPENMRS-DEV] Including one mavenized module within another > mavenized module > > > > I don't know when/you would use "pom" over "jar". I've always used jar. > Perhaps Matt Blanchette can chime in on that? > > Rafal figured out the api vs omod unit test thing. He has modified the > module archetype and the basicmodule to have the right separation. > > Ben > > On Tue, Jan 10, 2012 at 6:24 AM, Mark Goodrich <[email protected]> wrote: > > Darius, yeah, I agree... > > When I deploy the module to the repo via mvn deploy, all three projects are > added, as follows: > > addresshierarchy - with the pom > addresshierarchy-api - with the pom and jar > addresshierarchy-omod - with the pom and jar > > This seems correct to me. However, including the projects via type "pom" > doesn't seem to work for me... if I try something like: > > <groupId>org.openmrs.module</groupId> > <artifactId>addresshierarchy</artifactId> (or > <artifactId>addresshierarchy-api</artifact>) > > <version>2.2.0</version> > <type>pom</type> > > The build fails (and, prior to that, Eclipse doesn't see the address > hierarchy packages on the build path). > > The only way I can include the module as a dependency is using > <type>jar</type>... and since there is no jar in the parent project, I have > to directly reference the api jar: > > > <groupId>org.openmrs.module</groupId> > <artifactId>addresshierarchy-api</artifactId> > <version>2.2.0</version> > > <type>jar</type> > > I would assume that the <type>pom</type> should work... does anyone know why > this doesn't? Has anyone gotten a pom include to work with another module? > > Mark > > ________________________________________ > From: [email protected] [[email protected]] On Behalf Of Darius Jazayeri > [[email protected]] > Sent: Monday, January 09, 2012 5:53 PM > > To: [email protected] > Subject: Re: [OPENMRS-DEV] Including one mavenized module within another > mavenized module > > Offhand, I think that the correct behavior should be that you just need to > require the api of the required module. (Also that things like hbm.xmls, and > unit test classes should be in the api, rather the omod as they sometimes > are...) > > That said, if you include the parent project, that ought to work as well... > > -Darius > > On Mon, Jan 9, 2012 at 2:23 PM, Mark Goodrich > <[email protected]<mailto:[email protected]>> wrote: > It is really a matter of 1) determining what we want mvn deploy to deploy to > the module repo and then 2) having someone who knows how to configure maven > give a tutorial on how to upgrade the poms and/or configure the deploy > plugin appropriately. > > To see an example of what a mvn deploy currently deploys, take a look at the > three addresshierarchy directories below: > > http://mavenrepo.openmrs.org/nexus/content/repositories/releases/org/openmrs/module/ > > I don’t think it is particularly bad for the api and omod to be broken out > into different jars, is it? Really, if you are using one module from within > another you only need to import the api anyway. We could keep the mvn deploy > as-is--we’d just have to update the instructions for how to include another > module to note that you have to declare a dependency to the module-name-api > artifact instead of module-name. > > Take care, > Mark > > > > > From: [email protected]<mailto:[email protected]> > [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Burke Mamlin > > Sent: Monday, January 09, 2012 4:15 PM > > To: > [email protected]<mailto:[email protected]> > > Subject: Re: [OPENMRS-DEV] Including one mavenized module within another > mavenized module > > Assuming the jar within the omod target only contains web classes as you > say, then how about: > > * Rename Target/omod/moduleid-x.y.z.jar to > Target/omod/moduleid-omod-x.y.z.jar (only contains web classes) > * Create a Target/omod/moduleid-x.y.z.jar that contains both API + web > classes (.omod would just be a copy with .omod extension) > * mvn deploy would deploy the moduleid-x.y.z.jar containing API + web > classes > * (eventually) uploading an omod to the module repository would deploy to > mvn as well if it hadn't already been done > > So, devs could either deploy an artifact via mvn deploy or just upload their > omod to the module repository. > > -Burke > > On Mon, Jan 9, 2012 at 3:47 PM, Mark Goodrich > <[email protected]<mailto:[email protected]>> wrote: > Yes… but I’m not exactly sure understand it/agree with it… > > I would assume that we would want to use mvn deploy to deploy the module-api > and module-omod jars to maven repo. But, if I’m reading it right… we won’t > use mvn deploy to deploy modules to the maven repo. Instead we would simply > run a mvn package and then create a ticket to add the module jar to maven > repo. It is also unclear exactly what file we would use as the jar. > Running a mvn package creates the following files: > > Target/api/addresshierarchy-api-2.2.0.jar (which only includes the api > classes) > Target/omod/addresshierarchy-2.2.0.jar (which appears to only include the > omod classes) > Target/omod/addresshierarchy-2.2.0.omod (which assumedly includes both the > omod and api classes) > > If we want to reference a module just using > <artifactId>module-name</artifactId> instead of > <artifactId>module-name-api</artifactId> we would have to rename either > addresshierarchy-api-2.2.0.jar or addresshierarchy-2.2.0.omod to > addresshierarchy-2.2.0.jar. > > Mark > > > From: [email protected]<mailto:[email protected]> > [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Ben Wolfe > > Sent: Monday, January 09, 2012 1:55 PM > > To: > [email protected]<mailto:[email protected]> > > Subject: Re: [OPENMRS-DEV] Including one mavenized module within another > mavenized module > > Have you seen this page? > https://wiki.openmrs.org/display/docs/Requiring+another+module+in+your+module > > Ben > > On Mon, Jan 9, 2012 at 9:33 PM, Mark Goodrich > <[email protected]<mailto:[email protected]>> wrote: > Hello all— > > I’m having a little trouble referencing one mavenized module within another > mavenized module and am looking for some feedback on what the preferred way > to do this is via maven. > > I was able to deploy the address hierarchy module to the Openmrs maven repo > via mvn deploy, and confirmed that the addresshierarchy poms and jars have > been successfully added to the repo. Now I have a second module that uses a > service provided by the Address Hierarchy module. I’ve tried linking address > hierarchy as a pom dependency in the main pom and the api pom of the second > module using both the following methods, but in all cases I get compile > errors when building the second module because the relevant Address > Hierarchy classes can’t be found: > > <dependency> > <groupId>org.openmrs.module</groupId> > <artifactId>addresshierarchy</artifactId> > <version>2.2.0</version> > <type>pom</type> > <scope>provided</scope> > </dependency> > > <dependency> > <groupId>org.openmrs.module</groupId> > <artifactId>addresshierarchy-api</artifactId> > <version>2.2.0</version> > <type>pom</type> > <scope>provided</scope> > </dependency> > > The only way I can get it to build correctly is to reference the > addresshierarchy-api jar directly: > > <dependency> > <groupId>org.openmrs.module</groupId> > <artifactId>addresshierarchy-api</artifactId> > <version>2.2.0</version> > <type>jar<type> > <scope>provided</scope> > </dependency> > > Is this what we want? Or is there some way to include via pom that I am > missing? > > Thanks, > Mark > > > > ________________________________ > > Click here to > unsubscribe<mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> > from OpenMRS Developers' mailing list > > ________________________________ > Click here to > unsubscribe<mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> > from OpenMRS Developers' mailing list > ________________________________ > Click here to > unsubscribe<mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> > from OpenMRS Developers' mailing list > > ________________________________ > Click here to > unsubscribe<mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> > from OpenMRS Developers' mailing list > > ________________________________ > Click here to > unsubscribe<mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> > from OpenMRS Developers' mailing list > > _________________________________________ > > To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to > [email protected] with "SIGNOFF openmrs-devel-l" in the body (not > the subject) of your e-mail. > > [mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l] > > > > ________________________________ > > Click here to unsubscribe from OpenMRS Developers' mailing list > > ________________________________ > Click here to unsubscribe from OpenMRS Developers' mailing list _________________________________________ To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to [email protected] with "SIGNOFF openmrs-devel-l" in the body (not the subject) of your e-mail. [mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

