J'utilise ant, ivy et nexus repo manager pour construire et stocker mes artefacts. J'ai réussi à tout faire fonctionner: résolution de dépendance et publication. Jusqu'à ce que je rencontre un problème ... (bien sûr!). Je publiais un dépôt de 'release' dans nexus, qui est verrouillé sur 'disable redeploy' (même si vous changez le paramètre 'allow redeploy' (interface utilisateur vraiment boiteuse), vous pouvez imaginer à quel point ça a énervé Je recevais quand mes changements n'étaient pas mis à jour à travers le repo avant que je réalise que cela se produisaitIvy et Snapshots (Nexus)
Quoi qu'il en soit, je dois maintenant tout changer pour utiliser un "Snapshot" repo dans nexus. J'ai essayé une variété de choses, y compris googling étendu, et je n'ai pas obtenu n'importe quoi.L'erreur que je reçois est une mauvaise demande PUT, code d'erreur 400.
Quelqu'un qui a obtenu ce travail s'il vous plaît donner moi une pointe r sur ce qui me manque.
Un grand merci,
Alastair
FYI, voici ma config:
Notez que j'ai supprimé toute tentative d'obtenir des instantanés de travailler comme je ne savais pas ce qui était en fait (potentiellement) utile et ce qui était complet guff. C'est donc la configuration de la version de travail seulement.
Veuillez également noter que j'ai ajouté le fichier ivy.xml XXX-API pour information uniquement. Je ne peux même pas obtenir le xxx-common à publier (et cela n'a même pas de dépendances).
tâche Ant:
<target name="publish" depends="init-publish">
<property name="project.generated.ivy.file" value="${project.artifact.dir}/ivy.xml"/>
<property name="project.pom.file" value="${project.artifact.dir}/${project.handle}.pom"/>
<echo message="Artifact dir: ${project.artifact.dir}"/>
<ivy:deliver
deliverpattern="${project.generated.ivy.file}"
organisation="${project.organisation}"
module="${project.artifact}"
status="integration"
revision="${project.revision}"
pubrevision="${project.revision}" />
<ivy:resolve />
<ivy:makepom
ivyfile="${project.generated.ivy.file}"
pomfile="${project.pom.file}"/>
<ivy:publish
resolver="${ivy.omnicache.publisher}"
module="${project.artifact}"
organisation="${project.organisation}"
revision="${project.revision}"
pubrevision="${project.revision}"
pubdate="now"
overwrite="true"
publishivy="true"
status="integration"
artifactspattern="${project.artifact.dir}/[artifact]-[revision](-[classifier]).[ext]"
/>
</target>
Couple de fichiers de lierre pour donner une idée des dépendances internes:
projet XXX-commun:
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="com.myorg.xxx"
module="xxx_common"
status="integration"
revision="1.0">
</info>
<publications>
<artifact name="xxx_common" type="jar" ext="jar"/>
<artifact name="xxx_common" type="pom" ext="pom"/>
</publications>
<dependencies>
</dependencies>
</ivy-module>
projet XXX-API:
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="com.myorg.xxx"
module="xxx_api"
status="integration"
revision="1.0">
</info>
<publications>
<artifact name="xxx_api" type="jar" ext="jar"/>
<artifact name="xxx_api" type="pom" ext="pom"/>
</publications>
<dependencies>
<dependency org="com.myorg.xxx" name="xxx_common" rev="1.0" transitive="true" />
</dependencies>
</ivy-module>
IV Y Settings.xml:
<ivysettings>
<properties file="${ivy.project.dir}/project.properties" />
<settings
defaultResolver="chain"
defaultConflictManager="all" />
<credentials host="${ivy.credentials.host}" realm="Sonatype Nexus Repository Manager" username="${ivy.credentials.username}" passwd="${ivy.credentials.passwd}" />
<caches>
<cache name="ivy.cache" basedir="${ivy.cache.dir}" />
</caches>
<resolvers>
<ibiblio name="xxx_publisher" m2compatible="true" root="${ivy.xxx.publish.url}" />
<chain name="chain">
<url name="xxx">
<ivy pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/ivy-[revision].xml" />
<artifact pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<ibiblio name="xxx" m2compatible="true" root="${ivy.xxx.repo.url}"/>
<ibiblio name="public" m2compatible="true" root="${ivy.master.repo.url}" />
<url name="com.springsource.repository.bundles.release">
<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<url name="com.springsource.repository.bundles.external">
<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
</chain>
</resolvers>
</ivysettings>
Je devrais noter que j'ai essayé d'ajouter -SNAPSHOT à toutes les variables de révision. Cela a échoué quand ivy n'a pas pu créer le fichier résolu - * .xml ivy ... Je ne pouvais pas trouver n'importe où j'avais oublié :( –