Nasıl sarmaşık vermez: çalışma yayımlamak?

oy
24

yayımlamak çalışmak gerekiyordu: Ben karınca görev sarmaşık nasıl kolum.

Ben kavanoz dosyaların bir demet oluşturur benim normal yapı, yapmak, o zaman (yerel) deposuna o kavanozları itecek beklenebilir.

Nasıl inşa kavanoz almak için yerden belirleyebilir ve bu depoda ne düşer ki?

Güncelleştirme:

<target name=publish-local description=--> Publish Local>
    <ivy:retrieve />
    <ivy:publish resolver=local pubrevision=${release.version} status=release update=true overwrite=true>
        <artifacts pattern=${dist.dir}/[organisation]-[module].[ext] />
    </ivy:publish>
</target>

Bu aslında önce almak içermiyordu, çalışır.

Ama yine de bazı sorunlar var, ben 3 kavanoz, OpenSCADA-utils-0.9.2.jar, OpenSCADA-utils olarak OpenSCADA-utils.jar, OpenSCADA-utils-sources.jar ve OpenSCADA-utils-javadocs.jar yayınlamak istediğiniz varsayalım -0.9.2-sources.jar ve OpenSCADA-utils-0.9.2-javadocs.jar

Fiili isimleri monte nasıl, benim için tamamen net değildir ve ben hangi isimleri belirtebilirsiniz nereden buluyorlar gerekir. (Yukarıdaki fragmanı kullanılarak, kavanozlar, her zaman yalnızca utils.jar olarak adlandırılır).

Güncelleme 1:

Ben (biraz) çalışması lazım, ama yine de doğru gelmiyor. Bir şekilde tüm dersler 3. parti projelerinden bağımlılıkları odaklanmak, ama benim için aynı derecede önemli bir nokta proje belirli bağımlılıkları ele almaktır.

Ben çeşitli şekillerde birbirlerine bağlıdır alt projelerin bir grup var. sarmaşık düşünüldüğünde: nasıl başlayacağınızı yayımlamak bana açık değildir.

  1. Nasıl ilk sürümü ele? Ben onlar birlikte ait olduğunu belirtmek için tüm alt projeleri için ortak bir sürüm numarasına sahip (0.9 diyelim). Bu nedenle ilk revizyon 0.9.0 olmalı, ama benim projelerin şimdiye kadar hiçbir şey benim depo içindedir. Nasıl bu revizyon numarasını atamak Ivy alırım.

  2. geliştirilmesi çerçevesinde şimdiye kadar revizyon numarasını değiştirmeden tekrar inşa dosyaları yayınlamak istiyoruz.

  3. İşimde bitirdim ben paylaşılan bir platforma itin (ve revizyon numarası 0.9.1 için 0.9.0 den Diyelim artırmak) istiyoruz, bunun için önerilen yaklaşım nedir?

  4. Gerçek bir sürüm için, ben bir şekilde ben bunun için farklı yapılandırmalar kullanabilirsiniz tahmin bağımlılıklar ile ve olmadan dağılımlarını yapmak istiyorum. Benim avantaj Nasıl kullanabiliriz?

Oluştur 09/12/2008 saat 17:18
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
9

Sen "çözümleyicinizi" belirtmeniz gerekir. Gibi bir şey:

<ivy:publish resolver="local" pubrevision="1.0"/>

Bu desen tarafından yönetiliyor. Bu sayfa oldukça iyi kapsar. Eğer senin olmak istiyorum gibi görünüyor:

<artifacts pattern="${dist.dir}/[organisation]-[module]-[revision]-[type].[ext]" />

Ve ivy.xml dosyasında eserler olarak üç kavanoz tanımlamak gerekir. Böyle bir şey:

<publications>
    <artifact name="utils"/>
    <artifact name="utils" type="source"/>
    <artifact name="utils" type="javadocs"/>
</publications>
Cevap 09/12/2008 saat 17:30
kaynak kullanıcı

oy
4

İlk olarak, bir ivy.xml dosyası gerekir.

<ivy-module version="2.0">
    <info organisation="com.example.code" module="MyProject"
         revision="${project.revision}"/>
    <configurations>
        <conf name="runtime" description="" />
        ... other config elements here...
    </configurations>

    <publications defaultconf="runtime">
        <artifact name="MyProject" type="jar" ext="jar" conf="runtime" />
    </publications>

    <dependencies>
        ...
    </dependencies>
</ivy-module>

ivy.xml içinde bilgi elemanı ve yayınlar elemanları sen build.xml sarmaşık elemanları üzerindeki çeşitli özelliklerini atlamak için izin verir.

ivy.xml içinde $ {project.revision} unutmayın. mülkiyet build.xml değer verilir, ancak bu güzel iş gibi görünüyor. revizyon sonra kolayca gerekli her türlü değer olabilir (örn. gece yerel kurar vs oluşturur).

İşte size build.xml dosyasını ayarlamasını bir örnek

<property name="project.revision" value="1.0.0"/>

...

<target name="ivy">
    <ivy:resolve />

    <!-- Possible ivy:report, ivy:retrieve and other
    elements for managing your dependencies go here -->

    <ivy:deliver conf="*(public)"/> 
</target>

<target name="publish" depends="clean, ivy, jar">
    <ivy:publish resolver="local">
        <!-- possible artifacts elements if your artifacts
        are not in standard location -->
    </ivy:publish>
</target>

...
Cevap 13/01/2012 saat 17:28
kaynak kullanıcı

oy
2

Kaçmaya varsayalım konum <ivy:deliver/>ilk görevi. Bu Ivy depo tarafından kullanılabilecek bir ivy.xml dosyası oluşturur.

Eğer kullandığınız zaman <ivy:publish>belirttiğiniz hangi bunu belirterek yayınlamak istediğiniz depoya resolverparametresi. Bu içinde çözümleyici adla aynı olması gerekir ivy.settings.xmldosyası.

Gerçekten eserler belirtmeyen fakat bir desen nerede yayımlamak eserler bulmak için. Sen aracılığıyla bu belirtmek <artifacts>üzerinde alt görevin <ivy:publish>görev. Eğer altında her şeyi inşa Örneğin, ${basedir}/target/archivebizim gibi dizinde, bu gibi belirtebilirsiniz:

<ivy:publish resolver="public">
   <artifacts path="target/archive/[artifact].[ext]"/>
</ivy:publish>

Eğer dosyanızın revizyon numarasını değiştirmek isterseniz, kullanabilirsiniz pubrevision ait parametre <ivy:publish>görevi. Bu güncelleme yok ivy.xml, ancak doğru revizyon için kavanoz / savaşlarını yayınlayacaktır. Ben kullanmayı tercih pubrevision parametresini <ivy:deliver>görev ve doğru yapalım ivy.xmlyine de dosyayı. Sonra, <ivy:publish>benim de revizyon kullanacak ivy.xmldosyası.

Yapmanız gerek yok <ivy:retrieve>. Sonuçta, yeni kavanoz oluşturmak için yapısı çalıştırmayı ediyoruz ve Yapınızda YERE olmalıdır. Eğer bir kavanoz ya da savaş yaratmak değilseniz Aksi takdirde, ne senin Sarmaşık depoya yayınlamak çalışıyorsun? Ve, kesinlikle sadece yeniden yayınlamak için Ivy havuzda zaten bir şey almak istemiyorum.


Benim felsefem her zaman yayıncılık bir CM görevdir ve yapı prosedürünün bir parçası olarak yapılması gerektiğini olmuştur. Böylece, kullanmayan <ivy:deliver>veya <ivy:publish>.

Bizim Sarmaşık depo (ve bizim Maven depo) olarak Artifactory kullanın. Biz kullanmak Jenkins bizim sürekli yapı sunucusu olarak.

Ne yapmam geliştiriciler yapmak zorunda olduğu pom.xmlkendi dışına dosyayı ivy.xmlaracılığıyla dosyaya <ivy:makepom>görevi. Bu ve yapı kavanoz / savaşlar Jenkins arşivlenir eserler olarak kaydedilir.

Belirli bir yapı ile mutlu ve bizim kamu depo istediğinizde, ben Jenkin en bizim Artifactory deposuna onun pom.xml ile belirli bir kavanoz / savaş teşvik etmek Yapı görevi teşvik kullanın. Biz kullanmak mvn deploy:deploy-filebunu yapmak görevi.

Cevap 28/08/2012 saat 19:07
kaynak kullanıcı

oy
0

Burada ne yaptığını sarmaşık gerçekleştirmek için önemlidir. Bu sadece sarmaşık deposu haline yapay kavanoz kopyalama DEĞİL - aynı zamanda eserler her birinin tüm bakmakla belirtmek ilgili ".ivy.xml" dosyaları oluşturuyor.

Kapakları altında ivy:retrievegörev aslında aynı zamanda bir tetikliyor ivy:resolve. Bu sarmaşık zaman: gidermek oluşur dosya (içinde yerel sarmaşık önbelleğe yazılır .ivyklasör user.homeçözünürlüğü (. Revizyonlar modülleri çözünürlüğü tamamlamak için gerekli edildiği) zaman bunun nasıl belirtir) ivy:publishkarşılaşıldığında, bu çözünürlük kaydıdır önbellekten alınan ve eserler için ivy.xml oluşturmak için kullanılan.

Bunu yaparken de buldum büyük sıkan gerekliliktir ivy:resolveve ivy:publishonlar karınca tarafından yerine getirildiğinde, görevleri her ikisi de aynı classloader tarafından yüklenebilir. Böyle emin olmak için en kolay yolu taskdef görevler loaderRef kullanmaktır. Örneğin (eşleştirme loaderRef etiketlerini dikkat edin):

<taskdef name="ivy-retrieve" 
     classname="org.apache.ivy.ant.IvyRetrieve" 
     classpathref="ivy.lib" 
     loaderRef="ivy.loader"/>
<taskdef name="ivy-publish" 
     classname="org.apache.ivy.ant.IvyPublish" 
     classpathref="ivy.lib" 
     loaderRef="ivy.loader"/>
Cevap 10/12/2008 saat 07:10
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more