I was not thinking of adding to Maven, rather I was soliciting insight
from the Maven community because I value their inventiveness.
I am half way toying with the idea of building something myself, but
first I want to make sure I am not reinventing the wheel.
I have been toying with the idea for a while as a software developer who
has had to build installers for applications and services, and I am
often dissatisfied with the experience I get using other people's
installers. At one time I was playing with the idea of my own installer
that would be cross platform, but the initial bootstrap would be
platform dependent, and install enough platform independent stuff, to do
the rest in a standard way.
For example, a couple years ago I built an installer for a service I was
working on. It is a very simple .NET Setup.exe, single file executable.
The first thing it does is make sure there is a JVM present, and
installs one if there is not. The next thing is does is creates a
Windows Service. The Windows Service is very simple, it uses jni4net and
starts up a file called service.jar, which then completed the rest of
the installation. The whole thing used fat binaries so it worked on a
variety of Windows platforms, both 32-bit and 64-bit. For OSX and Linux
I had intended a similar simple executable, that in turn launched the
same service.jar.
The part I was not too happy with was my service.jar was this ginormous
uber-jar created with the Assembly plug-in. Sure, everything worked
perfectly well, and was simple, but when I say ginormous I am very
serious. If I had had the time, the next thing I was going to do was
have my installer install Maven, and then bootstrap the rest of the
pieces by just choosing the right artifact names and versions given the
system environment I found. Basically, replace the uber-jar with a
common system-wide repository of jars, and configure the classpath
appropriately.
I am just thinking out loud and trying to get ideas from people.
Cheers, Eric
On 2013-03-01 5:31 PM, Ron Wheeler wrote:
My feeling is that this would be a major addition to Maven and would
still be missing a lot of stuff.
It looks more like a CMS with some rules and some processes that
construct a zip or an installer.
You need a lot of flexibility in defining how assets are assembled
into the required artifact.
Of course, one could extend Maven but it would almost be a complete
rewrite.
I think that we would be better served by looking at what Maven does
well and specifying a downstream process that incorporates the ideas
that you identified below but into a system that focuses on deployment.
It probably will attract a different type of person to the project.
I would expect that the Maven team is heavily weighted towards
developers as committers.
The design and implementation of this new facility should be driven by
system administrators and infrastructure support types who spend their
days making applications run in production.
Ron
On 01/03/2013 8:06 PM, Eric Kolotyluk wrote:
Thanks for the pointers Stephen,...
http://wiki.opscode.com/display/chef/Chef+Basics
https://puppetlabs.com/puppet/what-is-puppet/
Ron,...
Yes, I remember that deployment was outside the scope of Maven, but
one of the things I like about Maven is the repository concept. I was
advocating extending this concept from the development realm to the
deployment realm sort of the way Microsoft's Global Assembly Cache
(GAC) works, but for open-source artifacts. In particular, we could
leverage existing technology and tools such as Maven, Nexus, Maven
Central, etc.
For example, in terms of bootstrapping, you might have a simple
open-source installer the checks to see if there exists a local
system or network GAR (Global Artifact Repository), and if not,
creates one. Then it follows an embedded script, or remote script via
URI, to start populating the GAR with the artifacts needed. Finally,
when it starts deploying actual applications and services, it can
simply build a classpath by referencing locations in the GAR.
I was installing Akka recently, and it seemed to be doing something
similar to what I was looking for. There was a small bootstrap
installers, that just kept pulling more and more stuff in.
I have a project that is Maven based, and every time I setup my
development environment on a new system, I am simply amazed while I
watch Maven download hundreds of artifacts, and then it just builds
my project. I would like to have this kind of awesome experience in
production deployment tools.
Cheers, Eric
On 2013-03-01 2:07 PM, Ron Wheeler wrote:
On 01/03/2013 4:26 PM, Eric Kolotyluk wrote:
A while back we had some interesting discussions on using Maven, or
maven-like technology for deploying production software. I was
wondering if
anything new has been happening since then.
Basically what I am hoping to see is a generic installer framework
that
bootstraps deployment of a production system or service the way Maven
bootstraps a development environment.
Can anyone point me to anything happening on that front?
Cheers, Eric
My recollection of the conversation is that deployment is outside
the scope of Maven and there are other tools that approach this from
a more effective base functionality.
Maven works best at giving you 1 artifact for a project whereas
deployment needs to be able to generate a whole set of artifacts
based on configurations that include
- software artifacts
- configuration files
- branding
- documentation
- release notes
- license agreements
- installer
each of which may have to be customized for each client or each
deployment architecture(OS, database, etc.) or each deployment
environment(production, test, QA) .
Ron
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]