Just in case anyone else is looking to do the same (produce an XML artifact as build output):

I ended up defining a new package type for this after all. The artifact.from approach works (thanks for the fix!) but behaves a bit differently than I'd like - for example the file gets generated when you do 'buildr artifacts'.

So now I'm doing it this way:

def package_as_file(file_name)
  file file_name  => [...] do
    ... #generate the file
  end
end
def package_as_file_spec(spec)
  spec.merge({ :type=>:xml })
end

package(:file)

In my case generating the file means copying a template file and replacing various tokens. I wonder if there should be a built-in package type for files to simplify this a bit, so you could specify a src file and define a block to produce the target file?

~Greg


On Tue, 20 Oct 2009 02:44:43 -0400, Alex Boisvert <[email protected]> wrote:

I created a tracker for this issue at
https://issues.apache.org/jira/browse/BUILDR-330

alex

On Mon, Oct 19, 2009 at 5:41 PM, Greg Lucas <[email protected]> wrote:

Thanks! I'm working around the issue for now by just doing e.g. 'buildr
uninstall install', but I'll poke around for another solution that doesn't
require the caller to be aware of this behavior.

By the way, the approach I'm using came from here:

http://buildr.apache.org/artifacts.html#install_upload

It may be worth adding a note about this to that example as it was not
intuitive (to me, at least).

Thanks,

~Greg





On Mon, 19 Oct 2009 17:39:37 -0400, Alex Boisvert <[email protected]>
wrote:

 I think that's a bug in the install task.  It should re-install even if
the
target already exists (same as upload) to follow existing Maven
conventions.

alex


On Mon, Oct 19, 2009 at 11:29 AM, Greg Lucas <[email protected]>
wrote:

I've got a build that needs to install/upload an XML file as an artifact.
I'm doing the following in my Rakefile:

# produce the XML file
filter('src/...').into('target/...').using(...)

# define an artifact and hook in to install/upload
xml_artifact = artifact(...).from('target/...')
install xml_artifact
upload xml_artifact


This works fine the first time, but any subsequent time a run the build
the
artifact is never updated in my local m2 repo. It looks like install only
works if the artifact is not already there. That's not consistent with
the
behavior using package.

I suppose I could define a new packaging type for this but that seems
like
overkill. Is this the intended behavior of install? Is there a better way
to
deal with artifacts that are not in fact packaged archives?

I'm using buildr 1.2.10 (as currently dictated by the Apache ODE 1.x
branch).

--
Greg Lucas

Reply via email to