incubator-easyant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Louis Boudart <jeanlouis.boud...@gmail.com>
Subject Re: svn commit: r1373122 - in /incubator/easyant/plugins/trunk/offline: ./ module.ivy src/ src/main/ src/main/resources/ src/main/resources/offline.ant src/test/ src/test/antunit/ src/test/antunit/offline-test.xml src/test/antunit/sample-module.ivy
Date Wed, 15 Aug 2012 12:52:23 GMT
Done :)

Offline mode is not activated by default, but if you want to do so you can
configure the property in easyant-conf.xml


2012/8/15 Nicolas Lalevée <nicolas.lalevee@hibnet.org>

>
> Le 15 août 2012 à 13:12, Jean-Louis Boudart a écrit :
>
> > I have one question through :
> > Should we register offline repositories all the time ? or should we
> > register it only when running easyant in offline mode / or juste before
> > calling go-offline ?
> >
> > If we took the first option : the repository will be declared but not
> > pluged in resolution chain and will not be activated as dictartor
> resolver
> > except when running offline.
>
> From my point of view, we should always run offline by default, but that
> might not be a consensus :p
>
> Maybe the first option is preferable, if a third party plugin want to
> explicitly work with it. No idea yet why somebody would do that, but who
> knows.
> Either way is fine with me actually.
>
> Nicolas
>
> >
> >
> >
> > 2012/8/15 Nicolas Lalevée <nicolas.lalevee@hibnet.org>
> >
> >>
> >> Le 15 août 2012 à 11:29, Jean-Louis Boudart a écrit :
> >>
> >>> As you pointed out, the feature can't work properly as a system plugin.
> >>> So let's modify a bit the behavior.
> >>>
> >>> Checking if you're running in offline mode and configuring buildscope
> >>> should be done by easyant core not by a plugin, before any
> >> buildtype/plugin
> >>> resolution.
> >>>
> >>> offline plugin can still live and provide the go-offline target.
> >>>
> >>>
> >>> WDYT?
> >>
> >> That sounds great !
> >>
> >> Thank you for the explanations.
> >>
> >> Nicolas
> >>
> >>
> >>>
> >>>
> >>> 2012/8/15 Jean-Louis Boudart <jeanlouis.boudart@gmail.com>
> >>>
> >>>> I initially developped this plugins thinking that it could be used as
> a
> >>>> system plugins. System plugins are loaded by easyant at startup and
> >>>> configured in easyant-config.xml, like skeleton and
> ivy-repo-management
> >>>> plugins.
> >>>>
> >>>> But i haven't tested it as a system plugin yet. For my tests i have
> >>>> declared a dependency on this plugin in my project and the feature
> seems
> >>>> working. As it is a project plugin it is marked to be fetched in the
> >> build
> >>>> scope repository.
> >>>>
> >>>> As explain in feature presentation mail [1], you need to be online
> when
> >>>> you choose to turn offline. Then plugins / buildtypes their
> dependencies
> >>>> , and your project dependencies are fetched in a subdirectory of your
> >>>> project target/repository, and build scope repositories are configured
> >> (one
> >>>> for project, one for easyant ivy instance).
> >>>>
> >>>> Those buildscope repositorues are used ONLY if you are running easyant
> >> in
> >>>> offline mode :
> >>>> * by invoking easyant -o
> >>>> * by invoking easyant --offline
> >>>> * by setting easyant.offline property to true
> >>>>
> >>>> So if you need to update dependencies, run easyant normally (without
> >>>> beeing offline), invoke go-offline target.
> >>>>
> >>>> Then you're free to take advantage of offline stuff :).
> >>>>
> >>>> I'll publish it on our online repo if you want to give a try.
> >>>> I see at least two things to fix :
> >>>> * The two buildscope repository used by offline feature should not be
> >>>> stored in target/ as this directory is removed if you invoke a clean.
> >>>> * offline plugins should work as a system-plugin
> >>>>
> >>>> Any suggestion are welcome
> >>>>
> >>>> [1] http://markmail.org/thread/nwjlpygjb3vgn2vn
> >>>> Le 15 août 2012 00:16, "Nicolas Lalevée" <nicolas.lalevee@hibnet.org>
> a
> >>>> écrit :
> >>>>
> >>>> Hi,
> >>>>>
> >>>>> I am stumbled.
> >>>>> As you know I really like the idea of having things put offline.
But
> >> how
> >>>>> could things work within a plugin ? The plugins being supposed to
be
> >>>>> online, I would need to go online to go offline ? Then after that
the
> >>>>> offline plugin being offlined itself, how could I go online again
to
> do
> >>>>> some plugin update for instance ?
> >>>>>
> >>>>> I have no doubt I probably missed something, could you explain how
it
> >>>>> works ? :)
> >>>>>
> >>>>> Nicolas
> >>>>>
> >>>>> Le 14 août 2012 à 23:23, jlboudart@apache.org a écrit :
> >>>>>
> >>>>>> Author: jlboudart
> >>>>>> Date: Tue Aug 14 21:23:07 2012
> >>>>>> New Revision: 1373122
> >>>>>>
> >>>>>> URL: http://svn.apache.org/viewvc?rev=1373122&view=rev
> >>>>>> Log:
> >>>>>> Add offline plugin with tests
> >>>>>>
> >>>>>> Added:
> >>>>>>  incubator/easyant/plugins/trunk/offline/
> >>>>>>  incubator/easyant/plugins/trunk/offline/module.ivy
> >>>>>>  incubator/easyant/plugins/trunk/offline/src/
> >>>>>>  incubator/easyant/plugins/trunk/offline/src/main/
> >>>>>>  incubator/easyant/plugins/trunk/offline/src/main/resources/
> >>>>>>
> >>>>>
> incubator/easyant/plugins/trunk/offline/src/main/resources/offline.ant
> >>>>>>  incubator/easyant/plugins/trunk/offline/src/test/
> >>>>>>  incubator/easyant/plugins/trunk/offline/src/test/antunit/
> >>>>>>
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/offline-test.xml
> >>>>>>
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/sample-module.ivy
> >>>>>>
> >>>>>> Added: incubator/easyant/plugins/trunk/offline/module.ivy
> >>>>>> URL:
> >>>>>
> >>
> http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/offline/module.ivy?rev=1373122&view=auto
> >>>>>>
> >>>>>
> >>
> ==============================================================================
> >>>>>> --- incubator/easyant/plugins/trunk/offline/module.ivy (added)
> >>>>>> +++ incubator/easyant/plugins/trunk/offline/module.ivy Tue Aug
14
> >>>>> 21:23:07 2012
> >>>>>> @@ -0,0 +1,31 @@
> >>>>>> +<!--
> >>>>>> +   Licensed to the Apache Software Foundation (ASF) under one
or
> more
> >>>>>> +   contributor license agreements.  See the NOTICE file distributed
> >>>>> with
> >>>>>> +   this work for additional information regarding copyright
> >> ownership.
> >>>>>> +   The ASF licenses this file to You under the Apache License,
> >> Version
> >>>>> 2.0
> >>>>>> +   (the "License"); you may not use this file except in compliance
> >> with
> >>>>>> +   the License.  You may obtain a copy of the License at
> >>>>>> +
> >>>>>> +       http://www.apache.org/licenses/LICENSE-2.0
> >>>>>> +
> >>>>>> +   Unless required by applicable law or agreed to in writing,
> >> software
> >>>>>> +   distributed under the License is distributed on an "AS IS"
> BASIS,
> >>>>>> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or
> >>>>> implied.
> >>>>>> +   See the License for the specific language governing permissions
> >> and
> >>>>>> +   limitations under the License.
> >>>>>> +-->
> >>>>>> +<ivy-module version="2.0" xmlns:ea="http://www.easyant.org">
> >>>>>> +    <info organisation="org.apache.easyant.plugins"
> module="offline"
> >>>>> revision="0.9">
> >>>>>> +           <description>This module offline features.
You can
> define
> >>>>> it as a system plugin in easyant-conf.xml. Offline features will
> allow
> >> you
> >>>>> to retrieve all project dependencies and easyant modules (buildtypes,
> >> and
> >>>>> plugins) used by the project in project in a
> >> subdirectory.</description>
> >>>>>> +           <ea:build organisation="org.apache.easyant.buildtypes"
> >>>>> module="build-std-ant-plugin" revision="0.1"/>
> >>>>>> +<ea:plugin module="antunit" revision="0.9"/>
> >>>>>> +        </info>
> >>>>>> +        <configurations>
> >>>>>> +                <conf name="default" description="runtime
> >> dependencies
> >>>>> artifact can be used with this conf"/>
> >>>>>> +                <conf name="test" description="this scope
indicates
> >>>>> that the dependency is not required for normal use of the
> application,
> >> and
> >>>>> is only available for the test compilation and execution phases."/>
> >>>>>> +                <conf name="provided" description="this
is much
> like
> >>>>> compile, but indicates you expect the JDK or a container to provide
> >> it. It
> >>>>> is only available on the compilation classpath, and is not
> >> transitive."/>
> >>>>>> +        </configurations>
> >>>>>> +    <publications>
> >>>>>> +        <artifact type="ant"/>
> >>>>>> +    </publications>
> >>>>>> +</ivy-module>
> >>>>>>
> >>>>>> Added:
> >>>>>
> incubator/easyant/plugins/trunk/offline/src/main/resources/offline.ant
> >>>>>> URL:
> >>>>>
> >>
> http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/offline/src/main/resources/offline.ant?rev=1373122&view=auto
> >>>>>>
> >>>>>
> >>
> ==============================================================================
> >>>>>> ---
> >>>>>
> incubator/easyant/plugins/trunk/offline/src/main/resources/offline.ant
> >>>>> (added)
> >>>>>> +++
> >>>>>
> incubator/easyant/plugins/trunk/offline/src/main/resources/offline.ant
> >> Tue
> >>>>> Aug 14 21:23:07 2012
> >>>>>> @@ -0,0 +1,50 @@
> >>>>>> +<!--
> >>>>>> +   Licensed to the Apache Software Foundation (ASF) under one
or
> more
> >>>>>> +   contributor license agreements.  See the NOTICE file distributed
> >>>>> with
> >>>>>> +   this work for additional information regarding copyright
> >> ownership.
> >>>>>> +   The ASF licenses this file to You under the Apache License,
> >> Version
> >>>>> 2.0
> >>>>>> +   (the "License"); you may not use this file except in compliance
> >> with
> >>>>>> +   the License.  You may obtain a copy of the License at
> >>>>>> +
> >>>>>> +       http://www.apache.org/licenses/LICENSE-2.0
> >>>>>> +
> >>>>>> +   Unless required by applicable law or agreed to in writing,
> >> software
> >>>>>> +   distributed under the License is distributed on an "AS IS"
> BASIS,
> >>>>>> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or
> >>>>> implied.
> >>>>>> +   See the License for the specific language governing permissions
> >> and
> >>>>>> +   limitations under the License.
> >>>>>> +-->
> >>>>>> +<project name="org.apache.easyant.plugins#offline"
> >>>>>> +    xmlns:ivy="antlib:org.apache.ivy.ant"
> >>>>>> +    xmlns:ac="antlib:net.sf.antcontrib"
> >>>>>> +    xmlns:ea="antlib:org.apache.easyant">
> >>>>>> +
> >>>>>> +    <ea:core-version requiredrevision="[0.9,+]" />
> >>>>>> +
> >>>>>> +    <ea:parameter property="project.ivy.instance"
> >>>>> default="project.ivy.instance" description="the ivy instance name
for
> >> your
> >>>>> project" />
> >>>>>> +    <ea:parameter property="project.buildscope.resolver"
> >>>>> default="project.buildscope.repository" description="name of project
> >> build
> >>>>> scope repository"/>
> >>>>>> +    <ea:parameter property="easyant.buildscope.resolver"
> >>>>> default="easyant.buildscope.repository" description="name of easyant
> >> build
> >>>>> scope resolver"/>
> >>>>>> +    <ea:parameter property="easyant.offline" default="false"
> >>>>> description="specify if you're running easyant in offline mode"/>
> >>>>>> +
> >>>>>> +    <macrodef name="configure-build-repository">
> >>>>>> +         <attribute name="dictator" default="true"/>
> >>>>>> +         <sequential>
> >>>>>> +             <ea:configure-build-scoped-repository
> >>>>> dictator="@{dictator}" name="${project.buildscope.resolver}"
> >>>>> settingsRef="${project.ivy.instance}"/>
> >>>>>> +             <ea:configure-build-scoped-repository
> >>>>> dictator="@{dictator}" name="${easyant.buildscope.resolver}"
> >>>>> settingsRef="easyant.ivy.instance"/>
> >>>>>> +        </sequential>
> >>>>>> +    </macrodef>
> >>>>>> +    <ac:if>
> >>>>>> +        <istrue  value="${easyant.offline}"/>
> >>>>>> +        <ac:then>
> >>>>>> +             <configure-build-repository/>
> >>>>>> +        </ac:then>
> >>>>>> +    </ac:if>
> >>>>>> +
> >>>>>> +
> >>>>>> +    <target name="offline:go-offline">
> >>>>>> +        <configure-build-repository dictator="false"/>
> >>>>>> +
> >>>>>> +        <ea:go-offline
> >>>>> projectResolverName="${project.buildscope.resolver}"
> >>>>> easyantResolverName="${easyant.buildscope.resolver}"/>
> >>>>>> +    </target>
> >>>>>> +
> >>>>>> +</project>
> >>>>>>
> >>>>>> Added:
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/offline-test.xml
> >>>>>> URL:
> >>>>>
> >>
> http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/offline/src/test/antunit/offline-test.xml?rev=1373122&view=auto
> >>>>>>
> >>>>>
> >>
> ==============================================================================
> >>>>>> ---
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/offline-test.xml
> >>>>> (added)
> >>>>>> +++
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/offline-test.xml
> >>>>> Tue Aug 14 21:23:07 2012
> >>>>>> @@ -0,0 +1,71 @@
> >>>>>> +<!--
> >>>>>> +   Licensed to the Apache Software Foundation (ASF) under one
or
> more
> >>>>>> +   contributor license agreements.  See the NOTICE file distributed
> >>>>> with
> >>>>>> +   this work for additional information regarding copyright
> >> ownership.
> >>>>>> +   The ASF licenses this file to You under the Apache License,
> >> Version
> >>>>> 2.0
> >>>>>> +   (the "License"); you may not use this file except in compliance
> >> with
> >>>>>> +   the License.  You may obtain a copy of the License at
> >>>>>> +
> >>>>>> +       http://www.apache.org/licenses/LICENSE-2.0
> >>>>>> +
> >>>>>> +   Unless required by applicable law or agreed to in writing,
> >> software
> >>>>>> +   distributed under the License is distributed on an "AS IS"
> BASIS,
> >>>>>> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or
> >>>>> implied.
> >>>>>> +   See the License for the specific language governing permissions
> >> and
> >>>>>> +   limitations under the License.
> >>>>>> +-->
> >>>>>> +<project name="org.apache.easyant.plugins;offline-test"
> >>>>>> +    xmlns:au="antlib:org.apache.ant.antunit"
> >>>>>> +    xmlns:ivy="antlib:org.apache.ivy.ant"
> >>>>>> +    xmlns:ea="antlib:org.apache.easyant">
> >>>>>> +
> >>>>>> +    <!-- Import your plugin -->
> >>>>>> +    <property name="target"
> value="${basedir}/target/test-antunit"/>
> >>>>>> +    <!-- configure easyant in current project -->
> >>>>>> +    <ea:configure-easyant-ivy-instance />
> >>>>>> +    <!-- import our local plugin -->
> >>>>>> +    <ea:import-test-module moduleIvy="../../../module.ivy"
> >>>>> sourceDirectory="../../main/resources"/>
> >>>>>> +
> >>>>>> +    <!-- Defines a setUp / tearDown (before each test) that
cleans
> >> the
> >>>>> environnement -->
> >>>>>> +    <target name="clean" description="remove stale build
artifacts
> >>>>> before / after each test">
> >>>>>> +        <delete dir="${basedir}" includeemptydirs="true">
> >>>>>> +            <include name="**/target/**"/>
> >>>>>> +            <include name="**/lib/**"/>
> >>>>>> +        </delete>
> >>>>>> +    </target>
> >>>>>> +
> >>>>>> +    <target name="setUp" depends="clean">
> >>>>>> +      <ivy:settings id="project.ivy.instance"/>
> >>>>>> +      <property name="easyant.file"
> >>>>> value="${basedir}/sample-module.ivy"/>
> >>>>>> +    </target>
> >>>>>> +    <target name="tearDown" depends="clean"/>
> >>>>>> +
> >>>>>> +    <target name="test-offline:init" >
> >>>>>> +        <au:assertPropertyEquals name="project.ivy.instance"
> >>>>> value="project.ivy.instance"/>
> >>>>>> +        <au:assertPropertyEquals name="project.buildscope.resolver"
> >>>>> value="project.buildscope.repository"/>
> >>>>>> +        <au:assertPropertyEquals name="easyant.buildscope.resolver"
> >>>>> value="easyant.buildscope.repository"/>
> >>>>>> +        <au:assertPropertyEquals name="easyant.offline"
> >> value="false"/>
> >>>>>> +        <!--TODO: check if buildscope repository are registered
-->
> >>>>>> +    </target>
> >>>>>> +
> >>>>>> +
> >>>>>> +    <target name="test-offline:offline:go-offline"
> >>>>> depends="offline:go-offline">
> >>>>>> +        <!--TODO: check if buildscope repository are registered
-->
> >>>>>> +        <au:assertLogContains text=":: installing junit#junit;4.4
> ::"
> >>>>> />
> >>>>>> +        <au:assertLogContains text=":: installing in
> >>>>> project.buildscope.repository ::" />
> >>>>>> +        <au:assertLogContains text=":: installing
> >>>>> org.apache.easyant.plugins#abstract-test;0.9 ::" />
> >>>>>> +        <au:assertLogContains text=":: installing in
> >>>>> easyant.buildscope.repository ::" />
> >>>>>> +        <au:assertLogContains text=":: installing
> >>>>> org.apache.easyant.plugins#antunit;0.9 ::" />
> >>>>>> +
> >>>>>> +        <property name="ea.repo"
> >>>>> value="${target}/repository/easyant.buildscope.repository"/>
> >>>>>> +        <property name="project.repo"
> >>>>> value="${target}/repository/project.buildscope.repository"/>
> >>>>>> +        <au:assertFileExists file="${ea.repo}"/>
> >>>>>> +        <au:assertFileExists file="${project.repo}"/>
> >>>>>> +        <au:assertFileExists
> >>>>>
> file="${ea.repo}/org.apache.easyant.plugins/antunit/0.9/antunit.ant"/>
> >>>>>> +        <au:assertFileExists
> >>>>>
> file="${ea.repo}/org.apache.easyant.plugins/antunit/0.9/antunit.ivy"/>
> >>>>>> +        <au:assertFileExists
> >>>>> file="${project.repo}/junit/junit/4.4/junit.ivy"/>
> >>>>>> +        <au:assertFileExists
> >>>>> file="${project.repo}/junit/junit/4.4/junit.jar"/>
> >>>>>> +    </target>
> >>>>>> +
> >>>>>> +
> >>>>>> +</project>
> >>>>>>
> >>>>>> Added:
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/sample-module.ivy
> >>>>>> URL:
> >>>>>
> >>
> http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/offline/src/test/antunit/sample-module.ivy?rev=1373122&view=auto
> >>>>>>
> >>>>>
> >>
> ==============================================================================
> >>>>>> ---
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/sample-module.ivy
> >>>>> (added)
> >>>>>> +++
> >>>>>
> >>
> incubator/easyant/plugins/trunk/offline/src/test/antunit/sample-module.ivy
> >>>>> Tue Aug 14 21:23:07 2012
> >>>>>> @@ -0,0 +1,27 @@
> >>>>>> +<?xml version="1.0"?>
> >>>>>> +<!--
> >>>>>> +   Licensed to the Apache Software Foundation (ASF) under one
or
> more
> >>>>>> +   contributor license agreements.  See the NOTICE file distributed
> >>>>> with
> >>>>>> +   this work for additional information regarding copyright
> >> ownership.
> >>>>>> +   The ASF licenses this file to You under the Apache License,
> >> Version
> >>>>> 2.0
> >>>>>> +   (the "License"); you may not use this file except in compliance
> >> with
> >>>>>> +   the License.  You may obtain a copy of the License at
> >>>>>> +
> >>>>>> +       http://www.apache.org/licenses/LICENSE-2.0
> >>>>>> +
> >>>>>> +   Unless required by applicable law or agreed to in writing,
> >> software
> >>>>>> +   distributed under the License is distributed on an "AS IS"
> BASIS,
> >>>>>> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or
> >>>>> implied.
> >>>>>> +   See the License for the specific language governing permissions
> >> and
> >>>>>> +   limitations under the License.
> >>>>>> +-->
> >>>>>> +<ivy-module version="2.0" xmlns:ea="http://www.easyant.org">
> >>>>>> +    <info organisation="org.apache.easyant"
> >> module="standard-java-app"
> >>>>> revision="0.1" status="integration">
> >>>>>> +        <ea:plugin module="antunit" revision="0.9"/>
> >>>>>> +    </info>
> >>>>>> +    <dependencies>
> >>>>>> +        <dependency org="junit" name="junit" rev="4.4"/>
> >>>>>> +
> >>>>>> +    </dependencies>
> >>>>>> +
> >>>>>> +</ivy-module>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>
> >>>
> >>> --
> >>> Jean Louis Boudart
> >>> Independent consultant
> >>> Apache EasyAnt commiter http://incubator.apache.org/easyant/
> >>
> >>
> >
> >
> > --
> > Jean Louis Boudart
> > Independent consultant
> > Apache EasyAnt commiter http://incubator.apache.org/easyant/
>
>


-- 
Jean Louis Boudart
Independent consultant
Apache EasyAnt commiter http://incubator.apache.org/easyant/

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message