On Tue, Jan 27, 2009 at 9:42 AM, Simon Laws <[email protected]>wrote:
> > > On Tue, Jan 27, 2009 at 9:24 AM, ant elder <[email protected]> wrote: > >> >> >> On Tue, Jan 27, 2009 at 8:53 AM, Simon Laws <[email protected]>wrote: >> >>> >>> >>> On Tue, Jan 27, 2009 at 8:34 AM, ant elder <[email protected]> wrote: >>> >>>> >>>> >>>> On Mon, Jan 26, 2009 at 7:29 PM, Simon Laws >>>> <[email protected]>wrote: >>>> >>>>> >>>>> >>>>> On Mon, Jan 26, 2009 at 2:38 PM, ant elder <[email protected]>wrote: >>>>> >>>>>> >>>>>> >>>>>> On Mon, Jan 26, 2009 at 2:07 PM, Simon Laws < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Jan 26, 2009 at 1:44 PM, ant elder <[email protected]>wrote: >>>>>>> >>>>>>>> I know this is work in progress and we're not sure yet what the >>>>>>>> complete picture of how this will work yet, but one thing i think is >>>>>>>> good >>>>>>>> with the current samples is that the build scripts are simple and self >>>>>>>> contained and can be copied by users. So i'd probably prefer the Ant >>>>>>>> scripts >>>>>>>> don't use some shared common scripts unless its really needed. I guess >>>>>>>> i'm >>>>>>>> wondering if we do need to separate common bits out then maybe we >>>>>>>> haven't >>>>>>>> quite got this simple enough to use yet. >>>>>>>> >>>>>>>> ...ant >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Jan 26, 2009 at 12:55 PM, <[email protected]> wrote: >>>>>>>> >>>>>>>>> Author: slaws >>>>>>>>> Date: Mon Jan 26 12:55:41 2009 >>>>>>>>> New Revision: 737681 >>>>>>>>> >>>>>>>>> URL: http://svn.apache.org/viewvc?rev=737681&view=rev >>>>>>>>> Log: >>>>>>>>> Add an ant build file to hold some common targets used across the >>>>>>>>> samples >>>>>>>>> >>>>>>>>> Added: >>>>>>>>> tuscany/java/sca/samples/build-common.xml (with props) >>>>>>>>> >>>>>>>>> Added: tuscany/java/sca/samples/build-common.xml >>>>>>>>> URL: >>>>>>>>> http://svn.apache.org/viewvc/tuscany/java/sca/samples/build-common.xml?rev=737681&view=auto >>>>>>>>> >>>>>>>>> ============================================================================== >>>>>>>>> --- tuscany/java/sca/samples/build-common.xml (added) >>>>>>>>> +++ tuscany/java/sca/samples/build-common.xml Mon Jan 26 12:55:41 >>>>>>>>> 2009 >>>>>>>>> @@ -0,0 +1,34 @@ >>>>>>>>> +<!-- >>>>>>>>> + * 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="common"> >>>>>>>>> + <available file="../../distribution/pom.xml" >>>>>>>>> property="running.in.development"/> >>>>>>>>> + >>>>>>>>> + <target name="common-set-development" >>>>>>>>> if="running.in.development"> >>>>>>>>> + <property name="distro.root" >>>>>>>>> value="../../distribution/all/target"/> >>>>>>>>> + </target> >>>>>>>>> + >>>>>>>>> + <target name="common-set-distribution" >>>>>>>>> unless="running.in.development"> >>>>>>>>> + <property name="distro.root" value="../.."/> >>>>>>>>> + </target> >>>>>>>>> + >>>>>>>>> + <target name="common-init" depends="common-set-development, >>>>>>>>> common-set-distribution" > >>>>>>>>> + <mkdir dir="${sample.root}/target/classes"/> >>>>>>>>> + </target> >>>>>>>>> +</project> >>>>>>>>> >>>>>>>>> Propchange: tuscany/java/sca/samples/build-common.xml >>>>>>>>> >>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>> svn:eol-style = native >>>>>>>>> >>>>>>>>> Propchange: tuscany/java/sca/samples/build-common.xml >>>>>>>>> >>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>> svn:keywords = Rev Date >>>>>>>>> >>>>>>>>> Propchange: tuscany/java/sca/samples/build-common.xml >>>>>>>>> >>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>> svn:mime-type = text/xml >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> That's a fair comment. We have to get the balance right between ease >>>>>>> ot use/copying and ease of maintenance. Let's see how it looks in a >>>>>>> bit. I'm >>>>>>> using the common block atm so I don't have to keep going in and changing >>>>>>> three scripts as I have the following samples as test cases. >>>>>>> >>>>>>> implementation-java-calculator >>>>>>> host-webapp-calculator >>>>>>> binding-ws-calculator >>>>>>> >>>>>>> If it comes to it that we copy the majority of the specific code back >>>>>>> into each script that probably Ok with me (I reserving an element of >>>>>>> doubt >>>>>>> to see how things work out) Before we do that though I'd like to see if >>>>>>> we >>>>>>> can slim down that code to the absolute minimum and having it in one >>>>>>> place >>>>>>> makes that easier (for me at least). >>>>>>> >>>>>>> Simon >>>>>>> >>>>>> >>>>>> Can't these type of samples have really really simple build scripts - >>>>>> all they need is a dependency on the sca-api jar and then compile the >>>>>> application classes to get an SCA contribution jar - thats it. We don't >>>>>> even >>>>>> really need all those targets that we have in the 1.x sample builds to >>>>>> emulate maven functions, just the one simple compile step is all we >>>>>> really >>>>>> need. >>>>>> >>>>>> ...ant >>>>>> >>>>> >>>>> Ok, we lets play with them and see how far we can reasonably simplify. >>>>> All help much appreciated. >>>>> >>>>> Simon >>>>> >>>> >>>> Well ok, going back to first principles the below Ant script for the >>>> implementation-java-calculator sample is about as simple as it could get. >>>> It >>>> doesn't run the contribution to do that you'd use a launcher on the command >>>> line. It doesn't test the contribution running in Tuscany to do that we'd >>>> have an itest as that type of test is an integration test of the Tuscany >>>> runtime not a unit test of the calculator class. It doesn't have any code >>>> to >>>> work in the development environment because users are expected to be using >>>> a >>>> distribution and Ant, developers use Maven and the sample pom.xml (which >>>> would be similarly simple). I expect you'll say something like "but we need >>>> to be testing the Ant scripts in the developer build so they don't keep >>>> breaking", i don't think we do, they've kept breaking in the past because >>>> they've mixed several goals and become too complicated, keeping it simple >>>> like this will mean it wont break so easily and all the complexity will be >>>> in the launcher which would have its own unit tests. >>>> >>>> ...ant >>>> >>>> <project name="calculator" default="compile"> >>>> >>>> <target name="compile" depends="init"> >>>> <javac srcdir="src/main/java" >>>> destdir="target/classes" >>>> debug="on" >>>> source="1.5" >>>> target="1.5"> >>>> <classpath> >>>> <pathelement >>>> location="../../modules/tuscany-sca-api-2.0-SNAPSHOT.jar"/> >>>> </classpath> >>>> </javac> >>>> <copy todir="target/classes"> >>>> <fileset dir="src/main/resources"/> >>>> </copy> >>>> <jar destfile="target/calculator.jar" basedir="target/classes" >>>> /> >>>> </target> >>>> >>>> <target name="init"> >>>> <delete quiet="true" includeemptydirs="true"> >>>> <fileset dir="target"/> >>>> </delete> >>>> <mkdir dir="target/classes"/> >>>> </target> >>>> >>>> </project> >>>> >>>> >>>> >>>> >>> Why not include a run target. It seems much easier for the user to type >>> >>> ant >>> >>> rather than >>> >>> java -jar blah blah blah (which they can still do if they want to of >>> course) >>> >>> Simon >>> >> >> We could, and if we did that you also need a run target for osgi and what >> ever else we might support, and we need to duplicate those targets for every >> sample. So I'm exploring if we really need to that when we can have the >> launcher handle the runtime starting and keep the contribution samples >> clean. >> >> The consistent message with the samples could be about: >> - creating SCA contributions >> or >> - using SCA contributions in a Tuscany runtime >> >> The distribution would come with prebuilt sample jars so don't need to use >> the Ant build scripts unless you want to rebuild the SCA contribution. >> >> The launcher could by default use the contribution in the target folder of >> the current directory, so you just need to do: >> >> java -jar ..\launcher.jar >> >> which isn't really that much harder than "ant run" and it would be >> consistent across all the samples so you'd quickly get the understanding >> that to start a Tuscany runtime you run the Tuscany launcher. If that really >> is too hard to type we could ship simple .bat and .sh scripts that just do >> the "java -jar ..\launcher.jar" for you. >> >> That way also allows for other runtime environments without any change or >> extra code in the samples, for example, if you want to run in osgi you >> define a launcher config file for the equinox runtime once (the distribution >> would come with a predefined config file) and then just use "java -jar >> ..\launcher.jar osgi" and it would work for every sample that creates an SCA >> contribution. >> >> ...ant >> > > > Alright, so lets try it and see how it works out. These are not big changes > from the build.xml file point of view so we have the opportunity over the > next day or so to try a few ways and see precisely which we like best. Are > you going to put this configuration together so we can look at it? > > Simon > Ok I shall start, feel free to help. We need: - some samples changed to have the very simple Ant build scripts - a launcher as in TUSCANY-2789 - a launcher config file for the JSE runtime - a launcher config file for the equinox runtime - a Windows .bat file that calls java -jar launcher.jar - a shell script .sh file that calls java -jar launcher.jar - update the distribution to have a bin/ folder containing the launcher bits ...ant
