You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by David Jencks <da...@yahoo.com> on 2006/12/21 01:03:04 UTC
What are the goals of the jetspeed archetypes/plugins?
I may have a few more minutes to work on jetspeed so I started looking into the archetypes and plugins and realized I don't have a very clear idea of what they are supposed to do and how. So, I'll write down what I think and hope for corrections from anyone who actually knows something about this :-) Keep in mind that I don't know much about how portals are developed in the real world.
Here are some possible goals or purposes:
1. Set up a development environment for maven2 for developing a portal and related portlet applications. It looks to me as if this is the main function of the m2 archetypes. This sort of implies that a portal is going to be deployed with a fixed set of portlet applications and when the portlet apps change the entire portal will be rebuilt and redeployed. Is this accurate or in actual use do the portlet applications come and go while the portal remains running?
2. Provide maven2 tools for assembling a portal application by combining standard jetspeed2 parts and portal-specific parts. It looks to me as if this is the main function of the m1 jetspeed2 plugin. Simplifying this would be a side effect of adopting and completing my previous proposal about separating the pieces that get combined here.
3. Build artifacts ready to deploy on a specific app server. IMO it is better to distinguish between app servers than to try to force them all to look exactly like tomcat. For instance, some classes need to be shared among the portal and all the portlet apps. How to do this depends on the app server involved. The set of jars to be shared is the same, but the mechanism for installing so that they get shared is different. Similarly, some app servers can deal with ears and others cannot.
4. Build the jetspeed2 demo portal. Having constructed all this helpful machinery (at least in our minds) we should consider using it to construct the demo portal. To me this seems fairly straightforward for (2) and (3) but not for (1). Perhaps a functional test for (1) could be constructed by something like:
a. use the archetype to construct an environment, check it into svn, and actually develop the demo portal in it (so it's in svn)
b. in the build, run the archtype plugin to construct the test environment
c. copy over selected bits from (a) into (b)
d. build the modified environment from (c) and check that it works.
In order to make (c) plausible we'd have to keep the environment (a) up to date with what the archetype plugin is creating.
Comments? Additions? Subtractions?
many thanks
david jencks
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org
Re: What are the goals of the jetspeed archetypes/plugins?
Posted by David Sean Taylor <da...@bluesunrise.com>.
David Jencks wrote:
> I may have a few more minutes to work on jetspeed so I started
> looking into the archetypes and plugins and realized I don't have a
> very clear idea of what they are supposed to do and how. So, I'll
> write down what I think and hope for corrections from anyone who
> actually knows something about this :-) Keep in mind that I don't
> know much about how portals are developed in the real world.
>
Some documentation here:
http://wiki.apache.org/portals/Jetspeed2/Maven2BuildSupport
There are several archetypes
portal-archetype - create a custom Jetspeed Portal project
application-archetype - create a portlet application project
component-archetype = create a spring component project
portal-component-archetype - create a jetspeed component project
So yes, these are project templates for the Jetspeed artifacts
Whereas the installer is great for demos, anyone who is going to
maintain a portal will get started with customizing their portal's build
with the custom portal-archetype. Similar for portlet applications
I've been speaking to a lot of developers lately
The majority would prefer to have better Eclipse integration for this
kind of maintenance. Of course you can generate the project with
eclipse:eclipse from the command line, but since the Maven-2 plugin for
Eclipse is broken and of no use at this point until some bugs get fixed,
developers still go to a shell to build Jetspeed.
I have a tutorial here
Im scheduled to work on getting it checked in Friday
The tutorial covers a lot of your issues below
Why don't you try it out and let me know what you think
> Here are some possible goals or purposes:
>
> 1. Set up a development environment for maven2 for developing a
> portal and related portlet applications. It looks to me as if this
> is the main function of the m2 archetypes. This sort of implies that
> a portal is going to be deployed with a fixed set of portlet
> applications and when the portlet apps change the entire portal will
> be rebuilt and redeployed. Is this accurate or in actual use do the
> portlet applications come and go while the portal remains running?
Entirely up to the policy of the portal administrator.
We can deploy portlets 'live'. In fact we are working on a Remote
Portlet Application Deployer portlet for that scenario
The custom build would normally deploy the core portlet applications
that are a part of your project. If you follow the directory structure
we have setup for a custom portal, your portlet apps go under the
applications directory.
>
> 2. Provide maven2 tools for assembling a portal application by
> combining standard jetspeed2 parts and portal-specific parts. It
> looks to me as if this is the main function of the m1 jetspeed2
> plugin. Simplifying this would be a side effect of adopting and
> completing my previous proposal about separating the pieces that get
> combined here.
>
Yes, its really a framework for customization of
a) spring components and seed data - overriding security
implementations, or pipeliness for example, as well as defining custom
security constraints and permissions, seed data, initial roles, all
stuff that is different on a per custom portal basis
b) customization of the portal experience - layouts, decorators, skins,
and the overall site (portal folders and pages)
So there are really two kinds of customization that the custom portal
supports. This is covered in the tutorial as well
> 3. Build artifacts ready to deploy on a specific app server. IMO it
> is better to distinguish between app servers than to try to force
> them all to look exactly like tomcat. For instance, some classes
> need to be shared among the portal and all the portlet apps. How to
> do this depends on the app server involved. The set of jars to be
> shared is the same, but the mechanism for installing so that they get
> shared is different. Similarly, some app servers can deal with ears
> and others cannot.
A custom build has an application-servers directly meant for this
purpose. Right now, yes, only Tomcat supported. Contributions welcome
for other app servers.
Custom builds can also create EAR files that deploy to Websphere for
example (not Geronimo, the other one). I've never tested the EARS in
Geronimo. See the enterprise subproject in a custom build. We've been
deploying and running on Websphere 6.1 for a while now. Some nice
features there for shared class libraries. We don't have that part
automated, but we do have some decent documentation for doing deploying
to Websphere, setting up data sources, etc. Be nice if this all could
get automated, but frankly I don't know enough about Websphere
deployment scripting and anyway I don't think the tools required would
be Apache-license friendly.
>
> 4. Build the jetspeed2 demo portal. Having constructed all this
> helpful machinery (at least in our minds) we should consider using it
> to construct the demo portal. To me this seems fairly
> straightforward for (2) and (3) but not for (1). Perhaps a
> functional test for (1) could be constructed by something like: a.
> use the archetype to construct an environment, check it into svn, and
> actually develop the demo portal in it (so it's in svn)
>
> b. in the build, run the archtype plugin to construct the test
> environment
>
> c. copy over selected bits from (a) into (b)
>
> d. build the modified environment from (c) and check that it works.
>
> In order to make (c) plausible we'd have to keep the environment (a)
> up to date with what the archetype plugin is creating.
>
> Comments? Additions? Subtractions?
Also consider that we have profiles
There is the 'min' profile, which builds a portal + j2-admin, with a
minimal set of pages. This is really just a starting point for custom
apps and I use it as the starting point for all my apps
The 'full' profile builds an entire 'demo' portal
I would really like to get away from that 'default' demo portal, as its
confusing to many users. Many of the portlets there are programming
examples. I would prefer that Jetspeed had a way to configure different
portals based on what you want to see, including defining your skins as
well as which portlet applications are included and which portlets go on
the welcome page
IMO, the archetypes may not be the best solution
Im still not sure how to keep all the resources in sync, and its not
clear to me how to migrate to new versions of Jetspeed with the Maven-2
archetypes. With the Maven-1 plugin, I have projects that can easily be
updated to the latest implementation and configuration without
disruption to the production systems.
I think the current Maven-2 'custom' build based on archetypes, works
well, and Randy did a great job of repeating almost *all* the
functionality from the Maven-1 plugin, as that was our initial goal
Wouldn't a Jetspeed Maven2 plugin would be better? Archetypes have
issues and are some what limited. No one has stepped up to write a
Jetspeed Maven2 plugin yet
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org