So, as far as Maven is concerned, Red5 is scope "provided".
You want it to reference it for compiling but should not put its classes in the jar or war since you are going to sneak it into the package without Maven noticing.

Pretty standard problem. We make a lot of aggregation jars that are used in the same way. http://blog.artifact-software.com/tech/?p=121 describes how we handle a similar need to produce skinny wars that use libraries in Tomcar/shared or tomcat/lib to avoid copies of the same code in multiple jars. Our LMS project has over 80 Maven projects that produce a variety of jars and wars. Many of these share the use of large libraries such as CXF, Spring and Apache commons that can be shared through Tomcat's classloader rather than duplicated in each war.

There are some other notes about Maven on our blog that you might find interesting.

I would prefer an installer to get the shared libraries into tomcat/lib but that is another issue.

Ron


On 29/04/2014 10:24 PM, Maxim Solodovnik wrote:
Here is the structure:

"Openmeetings Util" project has compile time dependency "Red5 server"
Almost all other projects are dependent on "Openmeetings Util" and "Red5
server" (compile time)

But When I'm creating war file in "Openmeetings Web" project I need to
remove "Red5 server" and all it dependencies from the WEB-INF/lib folder
since all these jar files will be placed into tomcat/lib folder.


On Wed, Apr 30, 2014 at 4:43 AM, Ron Wheeler <[email protected]
wrote:
Where will the transitive dependencies come from?
There may be ways to do what you want.

Ron

On 29/04/2014 1:44 PM, Maxim Solodovnik wrote:

Additional question:

Is it possible to exclude compile time dependency (with all transitive
sub-dependencies)
form war libraries? (without listing libraries one by one)



On Tue, Apr 29, 2014 at 9:44 PM, Maxim Solodovnik <[email protected]
wrote:
  Hello Ron,
I'll take a look at izPack as an alternative to assembly plugin (which
seems to be able to create artifact similar to the current being created
by
ant)

Currently I'm trying to build all jars/war/swf files need to be packed
(by
assembly plugin or izPack)

Here is the stripped output of my current maven build:
http://pastebin.com/XvbA9yGM
As you can see, after normal build all projects are being forked:

     1. [INFO]
     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     2. [INFO] Forking Openmeetings Util 3.1.0-SNAPSHOT
     3. [INFO]
     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     4.


etc.

if I'm building single project using:
mvn clean install -pl openmeetings-web -am
I see no forking

Will appreciate any help on this


On Tue, Apr 29, 2014 at 9:25 PM, Ron Wheeler <
[email protected]> wrote:

  Can you describe the "forking" Maven problem in more detail.
What does it do that you don't want and what does it not do that you
need.

Is there anything about your build that is different from the thousands
of projects that use Maven to build Tomcat applications?

Have you looked at using Maven to build an installer with izPack.
This will let you use Maven to build the components and use the maven
izPack plug-in to build a user-friendly deployment tool that lets a
system
admin install all of your components in the "right" places with the
required permissions, initialization, etc. that may be required.

Ron

On 29/04/2014 10:13 AM, Maxim Solodovnik wrote:

  Thanks Russ!
I was hoping there is a way to avoid specifying parent version in every
sub-project.
But it seems to be "Maven way" :)

Maybe you know how to manage project forking? My projects are being
build
several times and the result of building parent project is
unpredictable
for whatever reason :(


On Tue, Apr 29, 2014 at 9:04 PM, Russell Gold <[email protected]>
wrote:

   HI Maxim,

Here is how I do child projects:

       <parent>
           <groupId>com.meterware.totalizer</groupId>
           <artifactId>totalizer</artifactId>
           <version>1.0-SNAPSHOT</version>
           <relativePath>..</relativePath>
       </parent>

       <artifactId>server</artifactId>


Note that I am specifying the parent project, but neither the group
nor
the version for the child project - just the artifactId. The others
are
automatically inherited.

Regards,
Russ

On Apr 26, 2014, at 3:38 AM, Maxim Solodovnik <[email protected]>
wrote:

   Hello All,

sorry for the keeping silence too long :)
finally I was able to start migration and more questions are come up:
:)

1) Is there any way to use parent project version in child projects?
I
currently use variable for this [1] but it results too many warnings

2) I have lots of "Forking PROJECT VERSION" and same tasks are
performed
again and again :( is there any way to disable forking?

3) somehow task in phase "process-test-resources" is executed even if
"-DskipTests=true" is specified:
mvn eclipse:eclipse -DskipTests=true
Or in case of eclipse:eclipse it is expected behavior?

4) While running "mvn site" I get lots of
Caused by: java.lang.ClassNotFoundException:
org.sonatype.aether.version.VersionConstraint
at

   org.codehaus.plexus.classworlds.strategy.
SelfFirstStrategy.loadClass(

SelfFirstStrategy.java:50)

  I have tried many solutions from the google none of them are working
:(


solomax@solomax-laptop:~/work/openmeetings/trunk/singlewebapp$ mvn

  -version
  Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9;
2014-02-15T00:37:52+07:00)
Maven home: /opt/maven
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: /opt/jdk1.7.0_51/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-24-generic", arch: "amd64",
family:
"unix"


Thanks in advance :)



On Thu, Mar 13, 2014 at 10:46 PM, Ron Wheeler <
[email protected]> wrote:

   Good approach.

Ron

On 13/03/2014 9:58 AM, Baptiste Mathus wrote:

   Well, though I agree Maven isn't designed to be an end-user tool,
using it

to build the end-user distribution is actually totally supported.

IMO, if what you're trying to do is building your product from some
sources
and binaries, then Maven can obviously do it.

If what you need for production is an installer, then creating an
installer
using izpack is indeed a good idea, but you would just build that
installer
during your Maven build (http://izpack.codehaus.org/
izpack-maven-plugin/e.g.).

You seem to actually have two kind of phases:
* the first one, typically compile and package your sources using

  binaries
coming from a repo manager (be it a corporately managed one, or

directly

from Central)

* the second one, creating the end-user distribution, is typically
done
with Maven using maven-assembly-plugin.

Don't hesitate to ask questions, because I don't think we've gone
so

  far
until now to understand your building steps.

Cheers

2014-03-13 14:24 GMT+01:00 Maxim Solodovnik <[email protected]
:
Thanks Ron,

  I'll take a look at it, but I'm afraid distribute application in
"partially
compiled state" is not an option.
Currently it works out of the box and this is the requirement.

Will try to study maven and postpone the migration for now


On Thu, Mar 13, 2014 at 8:18 PM, Ron Wheeler <
[email protected]

   wrote:

IMHO, Maven is a software build tool and trying to make it a
installation
tool is much too hard.

You might find that your life will be a lot easier with IzPack as
the

   tool

   to create your installer.

It will allow you to package up your maven artifacts with other
resources
into different OS-specific installers that can be distributed
easily.
It supports install time execution of your procedures so that you
can
start RED-5 or execute the flex processes required to build and

  install
   the
   Flash assets.
Ron



On 13/03/2014 4:51 AM, Maxim Solodovnik wrote:

Hello Baptiste,

  Thanks for your quick reply!
Red5-server is "custom tomcat" (zip/tgz with scripts, libraries,
configs
etc.).
We need to pack it in our distribution, not sure if it can be
done

   "Maven

way" :(

  2) tgz contains flex based Flash compiler with all necessary
  libraries
   and
binaries necessary to build Flash part of our application.


On Thu, Mar 13, 2014 at 5:15 AM, Baptiste Mathus <[email protected]
wrote:

    IIUC, your project openmeetings depends on red5 libraries.

   About your questions:

1) Not actually a Maven issue, but you seem to think the way to
go

  it
   to
build that dependency. As the project is ASLv2, you would far
better

  make
  sure/ask it be uploaded to Maven Central. Then just just the
  <dependency>
  in a normal way/
  Maven is actually very straightforward if you follow the Maven
Way

   (yeah,

sounds like a sect somehow, you may think ;-)).
  2) Once again, what does contain that tgz? If it contains jars
and
so

   on,
then forget about downloading and decompressing it during your
buil.

  Or
   you're gonna a world of despair. Just upload those libs under
some

sensible
coordinates in a corporate (or better, in Maven Central if the

  project
   is
OSS), and add the dependency.
  Please ask more questions/give more precisions if you want more
precise
help.

HTH


2014-03-12 17:51 GMT+01:00 Maxim Solodovnik <
[email protected]

  :
     Hello All,
   I'm new to maven and not very familiar with all its plugins.
I need to move project [1] from ant+ivy to maven
The problems are:

1) this project is build on top of [2] maven project (we need
the

   exact

structure and all libraries from this project) *[first
problem: i
don't
know how to do it]*
          I did it using ant as follows:

          a) using SVN download the project sources
          b) build it using maven
          c) unpack artifact and use it's structure in my build

Currently this project was moved to git and I was hoping it
will

  be
   possible to using maven scm:git for this, not sure how :(
2) this project need to download tgz file with required
framework,

extract

  it somewhere and use extracted file to perform the build
*[second

  problem:
  is this possible?]*
  Any help is highly appreciated
[1]


    https://svn.apache.org/viewvc/openmeetings/trunk/

   singlewebapp/build.xml?view=markup

[2] https://github.com/Red5/red5-server

  --
WBR
Maxim aka solomax

--
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor ! nbsp;!


   --

Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


------------------------------------------------------------
---------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



   --

WBR
Maxim aka solomax



    --
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


------------------------------------------------------------
---------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



  --
WBR
Maxim aka solomax

  -----------------
Author, Getting Started with Apache Maven <
http://www.packtpub.com/getting-started-with-apache-maven/video>

Come read my webnovel, Take a Lemon <http://www.takealemon.com>,
and listen to the Misfile radio play <
http://www.fuzzyfacetheater.com/misfile/>!









  --
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



--
WBR
Maxim aka solomax



--
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





--
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to