You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Alex Shneyderman <a....@gmail.com> on 2006/07/06 16:35:04 UTC

Disecting a webapp?

How does one disect a web app into many modules but deploy it as one web app?

This is what I mean:

We have a web application that is quite big. We can identify many
modules of it. There is a few core modules, and a bunch of child
modules. Practically all children are dependendent on core modules,
some child modules depend on other child modules. The modularization
is done in purely logical way. Meaning, we still have one maven
project for the webapp.

I was wondering if anyone can suggest a way to break those modules up
into seprate physical modules while keeping the ability to create a
unifying webapp? Is it even possible with Maven 1 or 2?

-- 
Thanks,
Alex.

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


Re: Disecting a webapp?

Posted by Pete Marvin King <la...@gmail.com>.
 it's now documented here
http://maven.apache.org/plugins/maven-war-plugin/examples/war-overlay.html.
 just ignore the warning it's obsolete, the overwriting bug is already
fixed.


cheers,
pete marvin


Stefan Hübner wrote:
> Hi guys,
>
> 2006/7/7, Alexandre Poitras <al...@gmail.com>:
>> Can't you create more than one war and add them to an ear archive? If
>> it's not a valid strategy in your case than I guess you can use the
>> dependency plugin "unpack" goal
>> (http://mojo.codehaus.org/dependency-maven-plugin/) or you can use the
>> war merging feature of Maven (don't know how it works but I know it
>> exists).
>
> war merging feature? Is this documented somewhere out there? sounds
> promissing. I'm also interested in best practises on this topic, since
> we're producing large webapps too. having all resources in just one
> big module is a bit nasty.
>
> -Stefan
>
>>
>> In my case, I use the dependency plugin to unpack resources (images,
>> css, ...) dependencies. Note those aren't limitations of Maven but of
>> JEE since each web modules must be packaged as an individual war and
>> of the web because there isn't any standard resources archive format.
>>
>> Hope it helps!
>>
>> On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
>> > Thanks, guys for your responses.
>> >
>> > But ... I think I was not understood correctly. Let me clarify a
>> bit here.
>> >
>> > The problem is not so much to separate layers into modules (it seems
>> > that's what examples demonstrate), but how to break up a big web
>> > application into smaller modules. The module's boundary is not that of
>> > the layer (business, webapp, core, etc). Web application itself needs
>> > to be broken onto smaller submodules. So core would have all the
>> > templates, js and css files and will be a webapp on its own, the child
>> > module would have concrete pages that utilize those templates and
>> > styles and in combination with the core module would constitute
>> > complete sub-application of a bigger app.
>> >
>> > When I develop I would like to checkout just one module and a few
>> > modules that this module depends on. Of course I would be able to
>> > deploy this one small module (and all of its dependencies), but it
>> > will not be the site itself, just one little portion. It also makes
>> > creation of the new module easier. Just declare dependencies and
>> > create a simple WAR structure.
>> >
>> > When I am happy with the little module I worked on, I will want to
>> > deploy it to production. This is when I will have to merge all the
>> > configuration files (web.xml comes to mind) and directory structures
>> > but only on creation of the WAR no need for physical merge on the
>> > system someplace.
>> >
>> > I am not sure if this made my question any clearer :-)
>> >
>> >
>> > On 7/6/06, Tamás Cservenák <t....@gmail.com> wrote:
>> > > Hi Alex,
>> > >
>> > > a quick example for this, see here:
>> > >
>> https://is-micro.myip.hu/trac/ismicro-commons/browser/trunk/ismicro-proximity
>>
>> > >
>> > > Three modules: px-core (j2ee and  transport independent),
>> px-core-maven
>> > > (maven bindings for core, till no sign of webapp) and px-webapp.
>> The module
>> > > separation should be "natural" and/or "logical" -- whetever it
>> means :)
>> > >
>> > > In my practice it means, produce ONLY ONE ARTIFACT, be as small
>> and as
>> > > simple as it can (but naturally keep the overall module count
>> manageable).
>> > >
>> > > Maven generated site from these sources here:
>> > > http://proximity.abstracthorizon.org/
>> > >
>> > >
>> > > ~t~
>> > >
>> > > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
>> > > >
>> > > > Also have a look at the better builds with maven book, there is an
>> > > > example in there.
>> > > >
>> > > > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
>> > > > > Create a project for each of the core module and the
>> children. then
>> > > > > the webapp can pull them in as dependancies.
>> > > > >
>> > > > > On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
>> > > > > > How does one disect a web app into many modules but deploy
>> it as one
>> > > > web app?
>> > > > > >
>> > > > > > This is what I mean:
>> > > > > >
>> > > > > > We have a web application that is quite big. We can
>> identify many
>> > > > > > modules of it. There is a few core modules, and a bunch of
>> child
>> > > > > > modules. Practically all children are dependendent on core
>> modules,
>> > > > > > some child modules depend on other child modules. The
>> modularization
>> > > > > > is done in purely logical way. Meaning, we still have one
>> maven
>> > > > > > project for the webapp.
>> > > > > >
>> > > > > > I was wondering if anyone can suggest a way to break those
>> modules up
>> > > > > > into seprate physical modules while keeping the ability to
>> create a
>> > > > > > unifying webapp? Is it even possible with Maven 1 or 2?
>> > > > > >
>> > > > > > --
>> > > > > > Thanks,
>> > > > > > Alex.
>> > > > > >
>> > > > > >
>> ---------------------------------------------------------------------
>> > > > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> > > > > > For additional commands, e-mail: users-help@maven.apache.org
>> > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > > >
>> ---------------------------------------------------------------------
>> > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> > > > For additional commands, e-mail: users-help@maven.apache.org
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>> > --
>> > Thanks,
>> > Alex.
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> > For additional commands, e-mail: users-help@maven.apache.org
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>


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


Re: Disecting a webapp?

Posted by Stefan Hübner <st...@googlemail.com>.
Hi guys,

2006/7/7, Alexandre Poitras <al...@gmail.com>:
> Can't you create more than one war and add them to an ear archive? If
> it's not a valid strategy in your case than I guess you can use the
> dependency plugin "unpack" goal
> (http://mojo.codehaus.org/dependency-maven-plugin/) or you can use the
> war merging feature of Maven (don't know how it works but I know it
> exists).

war merging feature? Is this documented somewhere out there? sounds
promissing. I'm also interested in best practises on this topic, since
we're producing large webapps too. having all resources in just one
big module is a bit nasty.

-Stefan

>
> In my case, I use the dependency plugin to unpack resources (images,
> css, ...) dependencies. Note those aren't limitations of Maven but of
> JEE since each web modules must be packaged as an individual war and
> of the web because there isn't any standard resources archive format.
>
> Hope it helps!
>
> On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> > Thanks, guys for your responses.
> >
> > But ... I think I was not understood correctly. Let me clarify a bit here.
> >
> > The problem is not so much to separate layers into modules (it seems
> > that's what examples demonstrate), but how to break up a big web
> > application into smaller modules. The module's boundary is not that of
> > the layer (business, webapp, core, etc). Web application itself needs
> > to be broken onto smaller submodules. So core would have all the
> > templates, js and css files and will be a webapp on its own, the child
> > module would have concrete pages that utilize those templates and
> > styles and in combination with the core module would constitute
> > complete sub-application of a bigger app.
> >
> > When I develop I would like to checkout just one module and a few
> > modules that this module depends on. Of course I would be able to
> > deploy this one small module (and all of its dependencies), but it
> > will not be the site itself, just one little portion. It also makes
> > creation of the new module easier. Just declare dependencies and
> > create a simple WAR structure.
> >
> > When I am happy with the little module I worked on, I will want to
> > deploy it to production. This is when I will have to merge all the
> > configuration files (web.xml comes to mind) and directory structures
> > but only on creation of the WAR no need for physical merge on the
> > system someplace.
> >
> > I am not sure if this made my question any clearer :-)
> >
> >
> > On 7/6/06, Tamás Cservenák <t....@gmail.com> wrote:
> > > Hi Alex,
> > >
> > > a quick example for this, see here:
> > > https://is-micro.myip.hu/trac/ismicro-commons/browser/trunk/ismicro-proximity
> > >
> > > Three modules: px-core (j2ee and  transport independent), px-core-maven
> > > (maven bindings for core, till no sign of webapp) and px-webapp. The module
> > > separation should be "natural" and/or "logical" -- whetever it means :)
> > >
> > > In my practice it means, produce ONLY ONE ARTIFACT, be as small and as
> > > simple as it can (but naturally keep the overall module count manageable).
> > >
> > > Maven generated site from these sources here:
> > > http://proximity.abstracthorizon.org/
> > >
> > >
> > > ~t~
> > >
> > > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> > > >
> > > > Also have a look at the better builds with maven book, there is an
> > > > example in there.
> > > >
> > > > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> > > > > Create a project for each of the core module and the children. then
> > > > > the webapp can pull them in as dependancies.
> > > > >
> > > > > On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> > > > > > How does one disect a web app into many modules but deploy it as one
> > > > web app?
> > > > > >
> > > > > > This is what I mean:
> > > > > >
> > > > > > We have a web application that is quite big. We can identify many
> > > > > > modules of it. There is a few core modules, and a bunch of child
> > > > > > modules. Practically all children are dependendent on core modules,
> > > > > > some child modules depend on other child modules. The modularization
> > > > > > is done in purely logical way. Meaning, we still have one maven
> > > > > > project for the webapp.
> > > > > >
> > > > > > I was wondering if anyone can suggest a way to break those modules up
> > > > > > into seprate physical modules while keeping the ability to create a
> > > > > > unifying webapp? Is it even possible with Maven 1 or 2?
> > > > > >
> > > > > > --
> > > > > > Thanks,
> > > > > > Alex.
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > > > > For additional commands, e-mail: users-help@maven.apache.org
> > > > > >
> > > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > > For additional commands, e-mail: users-help@maven.apache.org
> > > >
> > > >
> > >
> > >
> >
> >
> > --
> > Thanks,
> > Alex.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > For additional commands, e-mail: users-help@maven.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

Re: Disecting a webapp?

Posted by Alexandre Poitras <al...@gmail.com>.
Can't you create more than one war and add them to an ear archive? If
it's not a valid strategy in your case than I guess you can use the
dependency plugin "unpack" goal
(http://mojo.codehaus.org/dependency-maven-plugin/) or you can use the
war merging feature of Maven (don't know how it works but I know it
exists).

In my case, I use the dependency plugin to unpack resources (images,
css, ...) dependencies. Note those aren't limitations of Maven but of
JEE since each web modules must be packaged as an individual war and
of the web because there isn't any standard resources archive format.

Hope it helps!

On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> Thanks, guys for your responses.
>
> But ... I think I was not understood correctly. Let me clarify a bit here.
>
> The problem is not so much to separate layers into modules (it seems
> that's what examples demonstrate), but how to break up a big web
> application into smaller modules. The module's boundary is not that of
> the layer (business, webapp, core, etc). Web application itself needs
> to be broken onto smaller submodules. So core would have all the
> templates, js and css files and will be a webapp on its own, the child
> module would have concrete pages that utilize those templates and
> styles and in combination with the core module would constitute
> complete sub-application of a bigger app.
>
> When I develop I would like to checkout just one module and a few
> modules that this module depends on. Of course I would be able to
> deploy this one small module (and all of its dependencies), but it
> will not be the site itself, just one little portion. It also makes
> creation of the new module easier. Just declare dependencies and
> create a simple WAR structure.
>
> When I am happy with the little module I worked on, I will want to
> deploy it to production. This is when I will have to merge all the
> configuration files (web.xml comes to mind) and directory structures
> but only on creation of the WAR no need for physical merge on the
> system someplace.
>
> I am not sure if this made my question any clearer :-)
>
>
> On 7/6/06, Tamás Cservenák <t....@gmail.com> wrote:
> > Hi Alex,
> >
> > a quick example for this, see here:
> > https://is-micro.myip.hu/trac/ismicro-commons/browser/trunk/ismicro-proximity
> >
> > Three modules: px-core (j2ee and  transport independent), px-core-maven
> > (maven bindings for core, till no sign of webapp) and px-webapp. The module
> > separation should be "natural" and/or "logical" -- whetever it means :)
> >
> > In my practice it means, produce ONLY ONE ARTIFACT, be as small and as
> > simple as it can (but naturally keep the overall module count manageable).
> >
> > Maven generated site from these sources here:
> > http://proximity.abstracthorizon.org/
> >
> >
> > ~t~
> >
> > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> > >
> > > Also have a look at the better builds with maven book, there is an
> > > example in there.
> > >
> > > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> > > > Create a project for each of the core module and the children. then
> > > > the webapp can pull them in as dependancies.
> > > >
> > > > On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> > > > > How does one disect a web app into many modules but deploy it as one
> > > web app?
> > > > >
> > > > > This is what I mean:
> > > > >
> > > > > We have a web application that is quite big. We can identify many
> > > > > modules of it. There is a few core modules, and a bunch of child
> > > > > modules. Practically all children are dependendent on core modules,
> > > > > some child modules depend on other child modules. The modularization
> > > > > is done in purely logical way. Meaning, we still have one maven
> > > > > project for the webapp.
> > > > >
> > > > > I was wondering if anyone can suggest a way to break those modules up
> > > > > into seprate physical modules while keeping the ability to create a
> > > > > unifying webapp? Is it even possible with Maven 1 or 2?
> > > > >
> > > > > --
> > > > > Thanks,
> > > > > Alex.
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > > > For additional commands, e-mail: users-help@maven.apache.org
> > > > >
> > > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > For additional commands, e-mail: users-help@maven.apache.org
> > >
> > >
> >
> >
>
>
> --
> Thanks,
> Alex.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

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


Re: Disecting a webapp?

Posted by Alex Shneyderman <a....@gmail.com>.
Thanks, guys for your responses.

But ... I think I was not understood correctly. Let me clarify a bit here.

The problem is not so much to separate layers into modules (it seems
that's what examples demonstrate), but how to break up a big web
application into smaller modules. The module's boundary is not that of
the layer (business, webapp, core, etc). Web application itself needs
to be broken onto smaller submodules. So core would have all the
templates, js and css files and will be a webapp on its own, the child
module would have concrete pages that utilize those templates and
styles and in combination with the core module would constitute
complete sub-application of a bigger app.

When I develop I would like to checkout just one module and a few
modules that this module depends on. Of course I would be able to
deploy this one small module (and all of its dependencies), but it
will not be the site itself, just one little portion. It also makes
creation of the new module easier. Just declare dependencies and
create a simple WAR structure.

When I am happy with the little module I worked on, I will want to
deploy it to production. This is when I will have to merge all the
configuration files (web.xml comes to mind) and directory structures
but only on creation of the WAR no need for physical merge on the
system someplace.

I am not sure if this made my question any clearer :-)


On 7/6/06, Tamás Cservenák <t....@gmail.com> wrote:
> Hi Alex,
>
> a quick example for this, see here:
> https://is-micro.myip.hu/trac/ismicro-commons/browser/trunk/ismicro-proximity
>
> Three modules: px-core (j2ee and  transport independent), px-core-maven
> (maven bindings for core, till no sign of webapp) and px-webapp. The module
> separation should be "natural" and/or "logical" -- whetever it means :)
>
> In my practice it means, produce ONLY ONE ARTIFACT, be as small and as
> simple as it can (but naturally keep the overall module count manageable).
>
> Maven generated site from these sources here:
> http://proximity.abstracthorizon.org/
>
>
> ~t~
>
> On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> >
> > Also have a look at the better builds with maven book, there is an
> > example in there.
> >
> > On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> > > Create a project for each of the core module and the children. then
> > > the webapp can pull them in as dependancies.
> > >
> > > On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> > > > How does one disect a web app into many modules but deploy it as one
> > web app?
> > > >
> > > > This is what I mean:
> > > >
> > > > We have a web application that is quite big. We can identify many
> > > > modules of it. There is a few core modules, and a bunch of child
> > > > modules. Practically all children are dependendent on core modules,
> > > > some child modules depend on other child modules. The modularization
> > > > is done in purely logical way. Meaning, we still have one maven
> > > > project for the webapp.
> > > >
> > > > I was wondering if anyone can suggest a way to break those modules up
> > > > into seprate physical modules while keeping the ability to create a
> > > > unifying webapp? Is it even possible with Maven 1 or 2?
> > > >
> > > > --
> > > > Thanks,
> > > > Alex.
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > > For additional commands, e-mail: users-help@maven.apache.org
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > For additional commands, e-mail: users-help@maven.apache.org
> >
> >
>
>


-- 
Thanks,
Alex.

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


Re: Disecting a webapp?

Posted by Tamás Cservenák <t....@gmail.com>.
Hi Alex,

a quick example for this, see here:
https://is-micro.myip.hu/trac/ismicro-commons/browser/trunk/ismicro-proximity

Three modules: px-core (j2ee and  transport independent), px-core-maven
(maven bindings for core, till no sign of webapp) and px-webapp. The module
separation should be "natural" and/or "logical" -- whetever it means :)

In my practice it means, produce ONLY ONE ARTIFACT, be as small and as
simple as it can (but naturally keep the overall module count manageable).

Maven generated site from these sources here:
http://proximity.abstracthorizon.org/


~t~

On 7/6/06, ben short <be...@benshort.co.uk> wrote:
>
> Also have a look at the better builds with maven book, there is an
> example in there.
>
> On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> > Create a project for each of the core module and the children. then
> > the webapp can pull them in as dependancies.
> >
> > On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> > > How does one disect a web app into many modules but deploy it as one
> web app?
> > >
> > > This is what I mean:
> > >
> > > We have a web application that is quite big. We can identify many
> > > modules of it. There is a few core modules, and a bunch of child
> > > modules. Practically all children are dependendent on core modules,
> > > some child modules depend on other child modules. The modularization
> > > is done in purely logical way. Meaning, we still have one maven
> > > project for the webapp.
> > >
> > > I was wondering if anyone can suggest a way to break those modules up
> > > into seprate physical modules while keeping the ability to create a
> > > unifying webapp? Is it even possible with Maven 1 or 2?
> > >
> > > --
> > > Thanks,
> > > Alex.
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > For additional commands, e-mail: users-help@maven.apache.org
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

Re: Disecting a webapp?

Posted by ben short <be...@benshort.co.uk>.
Also have a look at the better builds with maven book, there is an
example in there.

On 7/6/06, ben short <be...@benshort.co.uk> wrote:
> Create a project for each of the core module and the children. then
> the webapp can pull them in as dependancies.
>
> On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> > How does one disect a web app into many modules but deploy it as one web app?
> >
> > This is what I mean:
> >
> > We have a web application that is quite big. We can identify many
> > modules of it. There is a few core modules, and a bunch of child
> > modules. Practically all children are dependendent on core modules,
> > some child modules depend on other child modules. The modularization
> > is done in purely logical way. Meaning, we still have one maven
> > project for the webapp.
> >
> > I was wondering if anyone can suggest a way to break those modules up
> > into seprate physical modules while keeping the ability to create a
> > unifying webapp? Is it even possible with Maven 1 or 2?
> >
> > --
> > Thanks,
> > Alex.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > For additional commands, e-mail: users-help@maven.apache.org
> >
> >
>

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


Re: Disecting a webapp?

Posted by ben short <be...@benshort.co.uk>.
Create a project for each of the core module and the children. then
the webapp can pull them in as dependancies.

On 7/6/06, Alex Shneyderman <a....@gmail.com> wrote:
> How does one disect a web app into many modules but deploy it as one web app?
>
> This is what I mean:
>
> We have a web application that is quite big. We can identify many
> modules of it. There is a few core modules, and a bunch of child
> modules. Practically all children are dependendent on core modules,
> some child modules depend on other child modules. The modularization
> is done in purely logical way. Meaning, we still have one maven
> project for the webapp.
>
> I was wondering if anyone can suggest a way to break those modules up
> into seprate physical modules while keeping the ability to create a
> unifying webapp? Is it even possible with Maven 1 or 2?
>
> --
> Thanks,
> Alex.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

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