ok so finally i am able to make it work ;-)  but i made changes as per my
assumption in previous mails so need confirmation if that is how it works :

New code is below , I have replaces search with repositories.exists as per
recommendation :
I have tested it and works fine .. but let me know

===========================================================================

import org.artifactory.exception.CancelException
import org.artifactory.repo.RepoPathFactory
import org.artifactory.util.StringInputStream

storage {

  afterCreate { item ->
    def SourcePath = RepoPathFactory.create('stage-release',
item.repoPath.path)
    def DestPath = RepoPathFactory.create('release', item.repoPath.path)
    if (item.repoPath.id.contains('stage-release')) {
        echo " ID is " + item.repoPath.id
        if (repositories.exists(DestPath))
            {
            echo "FOUND the artifact in the release repo so no need to copy"
            } else {
            echo "MISSING artifact in the release repo so copying it over"
            repositories.copy (SourcePath, DestPath)
    }
    }

  }


 }


def echo(str) {
  log.warn "########################### " + str;
}

===========================================================================

-Raj

On Sun, Apr 15, 2012 at 4:21 PM, Rajwinder Makkar
<[email protected]>wrote:

> I did another test and looks like that is what the case is .. on uploading
> one jar file , "afterCreate" event get triggered quite a number of times :
>
> 2012-04-15 16:13:31,662 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,664 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,667 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,669 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,671 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,672 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,745 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,747 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,751 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,752 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,768 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,769 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,773 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,774 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,777 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,779 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
> 2012-04-15 16:13:31,848 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### I AM IN THE LOOP
> 2012-04-15 16:13:31,850 [pool-1-thread-25] [WARN ] (no-overwrite :26) -
> ########################### MISSING artifact in the release repo so copying
> it over
>
> So does that mean we need to put some other condition or use some other
> event ?
>
> -Raj
>
>
> On Sat, Apr 14, 2012 at 6:28 PM, Rajwinder Makkar <[email protected]
> > wrote:
>
>> Thanks Yoav,
>>
>> I will try to use the method as suggested.
>>
>> Here is an example of if the artifact never existed in "stage-release"
>> repo
>> http://weavetoconnect.com/first_time.png
>>
>> Here is an example of if the artifact existed and overwritten in
>> "stage-release" repo
>> http://weavetoconnect.com/over-write.png
>>
>> I think i got one clue on what is happening here . Issue is that this
>> code get triggered every time an artifact is created in a repo and looks
>> like artifactory considers "even creating an group id" or "version number"
>> as creation of new artifact. and hence get triggered on all these events
>> and hence the code mess up the structure.
>>
>> For ex if i need to upload axis-1.4.jar which has group id "axis" and
>> artifact id as "axis" and version number as 1.4 , then my assumption was
>> that artifactory considers "creation of axis-1.4.jar" as create event but
>> in actual it considers even creating "axis" folder , 1.4 folder as an
>> artifact and hence the above structure is formed.
>>
>> But this is just my theory .. i think i need to use an event which get
>> triggered when jar is created ?
>>
>> Please let me know
>>
>> -Raj
>>
>>
>>
>>
>> On Sat, Apr 14, 2012 at 2:09 PM, Yoav Landman <[email protected]> wrote:
>>
>>> Can you elaborate on why the copied artifact is not what you'd expect?
>>> Also, if you know the expected path of the artifact in the target
>>> repository, it is much preferable to check for its existence directly with
>>> Repositories.exists() than to run a search query each time.
>>>
>>>
>>> On Sat, Apr 14, 2012 at 2:30 AM, Rajwinder Makkar <
>>> [email protected]> wrote:
>>>
>>>> Ok so i have finally written the code by refering to various examples
>>>> on the artifactory site :
>>>>
>>>> Here is what the code is intended to do :
>>>>
>>>> 1. When a artifact is uploaded it get triggered on "afterCreate" event.
>>>> 2. It will query the release repo to see if the artifact version exist.
>>>> 3. If it exist then will not do any thing.
>>>> 4. If it does not exist then it will copy it to the release repo from
>>>> this stage repo.
>>>>
>>>> Now given i am niether a groovy or java coder this is a very basic code.
>>>>
>>>> Issue now is that when it copies the artifact it actually paste it in
>>>> target repo in a pretty wiered form. I am sure i am missing some thing but
>>>> i thought at this point it will be better to ask the experts ;-(
>>>>
>>>> -Raj
>>>>
>>>> ============================================
>>>> import org.artifactory.exception.CancelException
>>>> import org.artifactory.repo.RepoPathFactory
>>>> import org.artifactory.util.StringInputStream
>>>>
>>>> storage {
>>>>
>>>>   afterCreate { item ->
>>>>     def repoPaths = searches.artifactsByName(item.repoPath.name
>>>> ,"release")
>>>>     def SourcePath = RepoPathFactory.create('ext-release-local',
>>>> item.repoPath.path)
>>>>     def DestPath = RepoPathFactory.create('release', item.repoPath.path)
>>>>     if (repoPaths.size >= 1)
>>>>     {
>>>>     echo "FOUND the artifact in the release repo so no need to copy"
>>>>     } else {
>>>>     echo "MISSING artifact in the release repo so copying it over"
>>>>     repositories.copy (SourcePath, DestPath)
>>>>     }
>>>>   }
>>>>
>>>>
>>>>  }
>>>>
>>>>
>>>> def echo(str) {
>>>>   log.warn "########################### " + str;
>>>> }
>>>>
>>>>
>>>> ============================================
>>>>
>>>>
>>>> On Thu, Apr 12, 2012 at 9:30 AM, Rajwinder Makkar <
>>>> [email protected]> wrote:
>>>>
>>>>> Hmm i m not sure if this will work as before every build i do clean so
>>>>> every time it creates new file and it will have new chksum , so basically
>>>>> even if property tag eill not change,  file will have new chksum even when
>>>>> code is not changed..
>>>>>
>>>>> Or am i missing something
>>>>>
>>>>> Raj
>>>>> On Apr 12, 2012 4:28 AM, "Yoav Landman" <[email protected]> wrote:
>>>>>
>>>>>> The pom.properties file contains a timestamp comment that changes
>>>>>> with every build and so pollutes the artifact's checksum signature.
>>>>>> When this is the only difference, so you are virtually creating the
>>>>>> exact same binary, then it makes sense to save time and space by not
>>>>>> redeploying the same content.
>>>>>>
>>>>>> On Wed, Apr 11, 2012 at 10:45 PM, Rajwinder Makkar <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Thanks .. I think archive configuration will only prevent generation
>>>>>>> of .properties and .pom file .. i doubt it will impact checksum. And any
>>>>>>> how we want checksum to be changed if it's a new file and it make sense 
>>>>>>> ,
>>>>>>> only i was confused on how checksum is used when it comes to 
>>>>>>> artifactory.
>>>>>>>
>>>>>>> -Raj
>>>>>>>
>>>>>>> On Tue, Apr 10, 2012 at 12:43 AM, Yoav Landman <[email protected]>wrote:
>>>>>>>
>>>>>>>> You should be able to get around this behavior and end up with the
>>>>>>>> same checksum:
>>>>>>>> http://maven.apache.org/guides/mini/guide-archive-configuration.html
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Apr 9, 2012 at 1:18 PM, Noam Y. Tenne <[email protected]>wrote:
>>>>>>>>
>>>>>>>>> It's true that Maven modifies the produced artifact on every
>>>>>>>>> reactor build, even when the code itself was not modified; but that 
>>>>>>>>> is the
>>>>>>>>> behavior of Maven.
>>>>>>>>> Although Artifactory has many features that are "tailor-made" to
>>>>>>>>> suit specific build tools, it actually serves as a general purpose 
>>>>>>>>> binary
>>>>>>>>> repository manager and any file can be stored no matter how it was 
>>>>>>>>> produced.
>>>>>>>>> So this feature can save a lot of time and bandwidth when
>>>>>>>>> deploying from an environment which doesn't modify the checksum of the
>>>>>>>>> artifact willy nilly, or if deploying a copy of an artifact that is 
>>>>>>>>> already
>>>>>>>>> stored within Artifactory.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Apr 8, 2012 at 8:31 PM, Rajwinder Makkar <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> I am little confused with this API :
>>>>>>>>>>
>>>>>>>>>> As per documentation :
>>>>>>>>>>
>>>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>>> Deploy Artifact by Checksum
>>>>>>>>>>
>>>>>>>>>> Description: Deploy an artifact to the specified destination by
>>>>>>>>>> checking if the artifact content already exists in Artifactory.
>>>>>>>>>> If Artifactory already contains a readable artifact with the same
>>>>>>>>>> checksum the artifact content will be copied over to the new 
>>>>>>>>>> location and
>>>>>>>>>> return a response without requiring a content transfer.
>>>>>>>>>>
>>>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>>>
>>>>>>>>>> As with any maven build i do mvn clean deploy. This means that
>>>>>>>>>> the artifact will always be having a new md5 checksum no matter even 
>>>>>>>>>> if the
>>>>>>>>>> code is same. Then how come it can ever match the checksum of 
>>>>>>>>>> artifact in
>>>>>>>>>> artifactory ? For artifactory every time it will be a new artifact 
>>>>>>>>>> as the
>>>>>>>>>> checksum will be different.
>>>>>>>>>>
>>>>>>>>>> So what is the purpose of "deploy artifact by checksum"
>>>>>>>>>>
>>>>>>>>>> -Raj
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sun, Apr 8, 2012 at 7:34 AM, Noam Y. Tenne <[email protected]>wrote:
>>>>>>>>>>
>>>>>>>>>>> A basic guide can be found in the wiki page I linked to (
>>>>>>>>>>> http://wiki.jfrog.org/confluence/display/RTF/User+Plugins), but
>>>>>>>>>>> don't hesitate to contact us for any more info.
>>>>>>>>>>> BTW, the user plugins are only available as an addon (part of
>>>>>>>>>>> Artifactory's Pro version), but you can download a free eval from
>>>>>>>>>>> here<https://secure.artifactoryonline.com/registration/evaluateaddons.html>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Noam
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Apr 8, 2012 at 5:24 PM, Rajwinder Makkar <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hmm .. this is smart approach Noam .. let me give it a try .. I
>>>>>>>>>>>> assume it needs to be written in groovy .. but can u point me to 
>>>>>>>>>>>> the link
>>>>>>>>>>>> for documentation regarding this like how to create aftercreate 
>>>>>>>>>>>> hook ?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks much
>>>>>>>>>>>> Raj
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Apr 8, 2012 at 4:44 AM, Noam Y. Tenne 
>>>>>>>>>>>> <[email protected]>wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Actually, this can be achieved by utilizing our user 
>>>>>>>>>>>>> plugins<http://wiki.jfrog.org/confluence/display/RTF/User+Plugins>
>>>>>>>>>>>>> :
>>>>>>>>>>>>>
>>>>>>>>>>>>>    1. Create a temporary repository for deployments apart
>>>>>>>>>>>>>    from you original target repository and direct all your 
>>>>>>>>>>>>> deployments to that
>>>>>>>>>>>>>    temp repo.
>>>>>>>>>>>>>    2. Revoke delete permissions from the original target
>>>>>>>>>>>>>    repository and provide delete permissions to the temp repo.
>>>>>>>>>>>>>    3. Write a user plugin with the "afterCreate" hook that
>>>>>>>>>>>>>    checks each deployment performed on the temp repo; if the 
>>>>>>>>>>>>> artifact doesn't
>>>>>>>>>>>>>    already exist in the "real" target repository, copy it to 
>>>>>>>>>>>>> there; if the
>>>>>>>>>>>>>    artifact already exists, do nothing with it.
>>>>>>>>>>>>>
>>>>>>>>>>>>> HTH,
>>>>>>>>>>>>> Noam
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Apr 8, 2012 at 12:24 PM, Noam Y. Tenne <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Raj,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Currently, there's no way to achieve this; but you may open a
>>>>>>>>>>>>>> feature request in our JIRA <https://issues.jfrog.org> if
>>>>>>>>>>>>>> you feel this feature is needed.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>>> Noam
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Apr 8, 2012 at 9:32 AM, Rajwinder Makkar <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Is there any way in artifactory to configure this :
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If an artifact that is sent for deployment to a repo has
>>>>>>>>>>>>>>> existing version in the same repo then ignore that artifact. 
>>>>>>>>>>>>>>> Ignore means
>>>>>>>>>>>>>>> dont overwrite and dont fail the build either.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Or basically if i remove delete permission then it should
>>>>>>>>>>>>>>> not send failure to maven build.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -Raj
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>>>>>>>>>>> Boundary is the first to Know...and Tell You.
>>>>>>>>>>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it
>>>>>>>>>>>>>>> FREE!
>>>>>>>>>>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> Artifactory-users mailing list
>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>>>>>>>>> Boundary is the first to Know...and Tell You.
>>>>>>>>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it
>>>>>>>>>>>>> FREE!
>>>>>>>>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Artifactory-users mailing list
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>>>>>>>> Boundary is the first to Know...and Tell You.
>>>>>>>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>>>>>>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Artifactory-users mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>>>>>>> Boundary is the first to Know...and Tell You.
>>>>>>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>>>>>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Artifactory-users mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>>>>>> Boundary is the first to Know...and Tell You.
>>>>>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>>>>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Artifactory-users mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>>>>> Boundary is the first to Know...and Tell You.
>>>>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>>>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Artifactory-users mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>> Better than sec? Nothing is better than sec when it comes to
>>>>>>>> monitoring Big Data applications. Try Boundary one-second
>>>>>>>> resolution app monitoring today. Free.
>>>>>>>> http://p.sf.net/sfu/Boundary-dev2dev
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Artifactory-users mailing list
>>>>>>>> [email protected]
>>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Better than sec? Nothing is better than sec when it comes to
>>>>>>> monitoring Big Data applications. Try Boundary one-second
>>>>>>> resolution app monitoring today. Free.
>>>>>>> http://p.sf.net/sfu/Boundary-dev2dev
>>>>>>> _______________________________________________
>>>>>>> Artifactory-users mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> For Developers, A Lot Can Happen In A Second.
>>>>>> Boundary is the first to Know...and Tell You.
>>>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>>>> _______________________________________________
>>>>>> Artifactory-users mailing list
>>>>>> [email protected]
>>>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>>>
>>>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> For Developers, A Lot Can Happen In A Second.
>>>> Boundary is the first to Know...and Tell You.
>>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>>> _______________________________________________
>>>> Artifactory-users mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>>
>>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> For Developers, A Lot Can Happen In A Second.
>>> Boundary is the first to Know...and Tell You.
>>> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
>>> http://p.sf.net/sfu/Boundary-d2dvs2
>>> _______________________________________________
>>> Artifactory-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/artifactory-users
>>>
>>>
>>
>
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Artifactory-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/artifactory-users

Reply via email to