Another idea came to mind:

what do you think about the following:

1. writing + deploying all the projects to the repository. *(done by
developer).*
2. write a small maven project on production system (an install project) :
    that uses GMaven (groovy) plugin, to dynamically create a local pom that
will install the required
   project. (using http GET or just adding the project as a dependency and
runnnig mvn install...)

   for example, the user can run the project with a parameter on cli which
will contain the project
   name to fetch from artifactory.   *done by system guy (installs stuff on
production)*

anyone used the GMaven plugin?

Eyal.

On Tue, Jan 19, 2010 at 4:02 PM, eyal edri <[email protected]> wrote:

> I also used the "copy dependencies" option, but again this requires you
> (the developer) to run this from the machine that holds the pom file and
> deploy it (no sure if it supports remote copy).
>
> there might be another option like wayne suggested:
> http://cargo.codehaus.org/
>
> and using the maven2 plugin: http://cargo.codehaus.org/Maven2+plugin
>
> i'm checking it now... hopefully it help give a solution.
>
> -Eyal
>
>
>
>
> On Tue, Jan 19, 2010 at 3:41 PM, Johannes Schneider <
> [email protected]> wrote:
>
>> On 01/19/2010 11:30 AM, eyal edri wrote:
>>
>>> so you create a 'FAT' jar, as i understand.
>>>
>>
>> Yes. Most of the time.
>>
>> One project uses another approach where all dependencies are copied to a
>> lib folder. But this has other disadvantages: It isn't deployed to the
>> repository:
>> ...
>> <plugin>
>>
>>        <artifactId>maven-jar-plugin</artifactId>
>>        <configuration>
>>          <archive>
>>            <manifest>
>>              <mainClass>com.cedarsoft.meeting.MeetingTimer</mainClass>
>>              <addClasspath>true</addClasspath>
>>              <addExtensions />
>>              <classpathPrefix>lib</classpathPrefix>
>>            </manifest>
>>          </archive>
>>        </configuration>
>>      </plugin>
>>     <plugin>
>>
>>        <artifactId>maven-dependency-plugin</artifactId>
>>        <executions>
>>          <execution>
>>            <id>copy-dependencies</id>
>>            <phase>package</phase>
>>            <goals>
>>              <goal>copy-dependencies</goal>
>>            </goals>
>>          </execution>
>>        </executions>
>>
>>        <configuration>
>>          <includeScope>runtime</includeScope>
>>          <outputDirectory>${project.build.directory}/lib</outputDirectory>
>>        </configuration>
>>      </plugin>
>>    </plugins>
>> ...
>>
>> Other projects use JNLP. There are all jars copied to a lib directory,
>> too. But they are also not deployed to the repository.
>>
>>
>>  this can be very troublesome.
>>>
>>> think about a scenario where you need to update one of the dependencies,
>>> and
>>> its being used in a lot of application jars. you will need to update all
>>> the
>>> applications jars
>>>
>>
>> Yes, but I have to update all projects anyway: I have to update the
>> version information within the pom.xml...
>> And "patching" my deployed application (by replacing a dependency jar)
>> seems to be a very bad idea.
>>
>>
>> I see basically two options:
>> - One big super-jar that is deployed to a repository: See shade, minijar
>> and/or assembly plugin). Old versions are archived, very easy deployment:
>> Just one wget.
>> Disadvantages: Takes more space in the repository (but who cares about
>> disk space today), more to download.
>>
>> - lib directory with dependencies (see example above). Deployment is a
>> little bit more complicated. I think rsync might be a good solution. Safes
>> disk space and lesser stuff to download.
>>
>>
>> But as long as you don't have problems with disk space, I suggest the
>> big-jar approach...
>>
>>
>> Sincerly,
>>
>> Johannes
>>
>>
>>
>>
>>> On Tue, Jan 19, 2010 at 12:25 PM, Johannes Schneider<
>>> [email protected]
>>>
>>>> wrote:
>>>>
>>>
>>>  On 01/18/2010 07:28 PM, eyal edri wrote:
>>>>
>>>>  i'm interested in how people do deploy their apps, even if it's not
>>>>> directly
>>>>> connected to maven.
>>>>>
>>>>>
>>>> I create a runnable jar (with all dependencies) or a war (for web
>>>> applications). That is deployed to the repository.
>>>> That can be downloaded with a one liner using wget.
>>>>
>>>> So I think you shouldn't "install" or do any fancy work on you
>>>> production
>>>> server but just download the latest artifact/jar/war/whatever.
>>>>
>>>>
>>>> Johannes
>>>>
>>>>
>>>>
>>>>  maybe i'm biased from our current status, where we use YUM&RPM to
>>>>> install
>>>>> our perl code on servers.
>>>>>
>>>>> On Mon, Jan 18, 2010 at 8:25 PM, Wayne Fay<[email protected]>
>>>>> wrote:
>>>>>
>>>>>  i can't understand how the project goes from being the in repository
>>>>> to
>>>>>
>>>>>> being installed and running on the production server.
>>>>>>>
>>>>>>>
>>>>>> This is outside the domain of Maven. From the website: "Apache Maven
>>>>>> is a software project management and comprehension tool. Based on the
>>>>>> concept of a project object model (POM), Maven can manage a project's
>>>>>> build, reporting and documentation from a central piece of
>>>>>> information."
>>>>>>
>>>>>> Where does it say "Maven will also help you deploy/install your end
>>>>>> product into your production environment"?
>>>>>>
>>>>>> How does Ant or another Java build tool support your use case?
>>>>>>
>>>>>> Wayne
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> 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]
>>>>
>>>>
>>>>
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
> --
> Eyal Edri
>



-- 
Eyal Edri

Reply via email to