If there are specific suggestions or questions about the maven blog articles (from anyone), I would be grateful to have them. They were written rather quickly to explain a technique that we found useful. People may have to read more than one of the maven articles to get the gist of what we do.

Some of the more experienced and knowledgeable people in this forum have some reservations about our approach so I would hesitate to propose it as a "Best practice" but it does address the problem that you are facing in a way that works in a team environment (small team)
and achieves the objects that we sought
- faster maven build (install,deploy),
- small wars (only our code),
- easy deployment (fewer shared libraries)
- shorter and simpler pom dependency specifications and
- complete management control over versions of third party libraries.

Ron

On 30/04/2014 8:43 PM, Maxim Solodovnik wrote:
Thanks for your time

I have started with making red5 "provided" but the build failed since
necessary classes were not found.
May be is there any way to provide dependency before build ...

If not I will try to create optional dependency and another one subproject,
not sure if it will work.

I believe the blog article would be better if you can extend it a little
bit and improve the formatting. Actually I can't se how it can help me :(

Thanks for the help :)


On Wed, Apr 30, 2014 at 11:22 PM, Ron Wheeler <
rwhee...@artifact-software.com> wrote:

I don't have time to look at code and projects for free.
If you need consulting to move forward, there are others here that do
Maven for a business and can help you better than I can.

Have you tried making the red5 scope "provided".
What does this do to your build?
Does it get eliminate the red5 classes from your jar so that it only
appears in the assembled war as a resource?

To make life simpler, remove all code from the war project and put it into
a separate project that makes a jar that the war depends on.
This will make it clearer when you need red5 to compile your code and when
you need it to build a deployable war.
It will have scope "provided" as a dependency in your jar project.

Do you have specific questions about my blog articles on Maven and
aggregation jars?

Ron


On 30/04/2014 11:44 AM, Maxim Solodovnik wrote:

I'm afraid I don't understand your advice :(
Sorry

maybe you have example project available?
Or maybe you can take a look at my project
parent
http://svn.apache.org/viewvc/openmeetings/trunk/
singlewebapp/pom.xml?revision=HEAD&view=markup
util
http://svn.apache.org/viewvc/openmeetings/trunk/
singlewebapp/openmeetings-util/pom.xml?revision=HEAD&view=markup
web
http://svn.apache.org/viewvc/openmeetings/trunk/
singlewebapp/openmeetings-web/pom.xml?revision=HEAD&view=markup

and tell me what need to be changed.

working example will help a lot :)



On Wed, Apr 30, 2014 at 11:11 AM, Ron Wheeler <
rwhee...@artifact-software.com> wrote:

  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
<rwheeler@artifact-software.
com

  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 <
solomax...@gmail.com

  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 <
rwhee...@artifact-software.com> 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 <r...@gold-family.us
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 <
solomax...@gmail.com
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 (ea8b2b07643dbb1b84b6d16e1f0839
1b666bc1e9;

  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 <
rwhee...@artifact-software.com> 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 <
solomax...@gmail.com

  :
  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 <
rwhee...@artifact-software.com

     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 <
m...@batmat.net
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 <
solomax...@gmail.com

    :

        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;!


     --
WBR

Maxim aka solomax
   commands, e-mail: users-h...@maven.apache.org



    --

  WBR
Maxim aka solomax

    -----------------

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



--
Ron Wheeler
President
Artifact Software Inc
email: rwhee...@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org






--
Ron Wheeler
President
Artifact Software Inc
email: rwhee...@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to