« Return to Thread: We have setup a public OpenCms Maven2 Repository

Re: We have setup a public OpenCms Maven2 Repository

by Shi Yusen :: Rate this Message:

Reply to Author | View in Thread

Hi Achim,

Great to know Alkacon is also moving to a Maven/Ivy style development
procedure.

We haven't try Ivy before, we just follow JBoss and CAS to use maven2. I
hope the repository can also be used for Ivy.

Unfortunately, I haven't set the dependencies in the poms. I posted the
changes I made, I wish I can get some suggestion on how to improve the
dependence configuration.

1. Add the following in ${opencms-7.5.0}/build.xml:
    <target name="maven2dist" depends="setup-jar, uploadjar"
        description="Creates sources jars and upload them to maven2
repository">
       
        <property name="opencms.output.sources.jars"
location="${opencms.output}/build/sources-jars" />
        <property name="mvn"
location="/opt/maven/bin/mvn" />

        <!-- make directory for sources-jars -->
        <mkdir dir="${opencms.output.sources.jars}" />
       
        <!-- read list of all available modules -->
        <property
file="${opencms.input}/modules/all-modules.properties" />
       
        <!-- remove org.opencms.workplace.demos modules -->
        <var name="modules.common.selection" unset="true" />
        <for list="${modules.common.all}" param="module" trim="yes">
            <sequential>
                <propertyregex property="pack.name" input="@{module}"
regexp="org\.opencms\.workplace\.demos([^\.]*)" select="\1"
casesensitive="false" />
                <if>
                    <not>
                        <isset property="pack.name" />
                    </not>
                    <then>
                        <if>
                          <isset property="modules.common.selection"/>
                          <then>
                            <var name="modules.common.selection"
value="${modules.common.selection},@{module}" />
                          </then>
                          <else>
                            <var name="modules.common.selection"
value="@{module}" />
                          </else>
                        </if>
                    </then>
                </if>
                <var name="pack.name" unset="true" />
            </sequential>
        </for>
        <echo>${modules.common.selection}</echo>
        <!-- build war with selected modules -->
        <ant antfile="${opencms.input}/modules/build.xml"
target="maven2dist" inheritAll="false" >
            <property name="modules.common.selection"
value="${modules.common.selection}" />
            <property name="modules.selection.mode" value="selection" />
            <property name="app.name" value="${app.name}" />
        </ant>      
       
        <!-- build opencms-sources.jar -->
        <jar
jarfile="${opencms.output.sources.jars}/opencms-sources.jar">
            <fileset dir="${opencms.input}/src" />
            <zipfileset dir="${opencms.input}" prefix="META-INF"
includes="license.txt" />
        </jar>

        <!-- build opencms-setup-sources.jar -->
        <jar
jarfile="${opencms.output.sources.jars}/opencms-setup-sources.jar">
            <fileset dir="${opencms.input}/src-setup" />
            <zipfileset dir="${opencms.input}" prefix="META-INF"
includes="license.txt" />
        </jar>

        <!-- build upload-sources.jar -->
        <jar
jarfile="${opencms.output.sources.jars}/upload-sources.jar">
            <fileset dir="${opencms.input}/src-components">
                <include name="**/applet/*.java"/>
            </fileset>
            <zipfileset dir="${opencms.input}" prefix="META-INF"
includes="license.txt" />
        </jar>

        <!-- upload opencms.jar and opencms-sources.jar -->
        <exec executable="${mvn}">
            <arg value="deploy:deploy-file" />
            <arg value="-Dfile=
${opencms.output.sources.jars}/opencms-sources.jar" />
            <arg value="-DrepositoryId=langhua.public" />
            <arg
value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
            <arg value="-DgroupId=opencms" />
            <arg value="-DartifactId=opencms" />
            <arg value="-Dversion=${version.number}" />
            <arg value="-Dpackaging=sources.jar" />
        </exec>
        <exec executable="${mvn}">
            <arg value="deploy:deploy-file" />
            <arg value="-Dfile=${opencms.output.jars}/opencms.jar" />
            <arg value="-DrepositoryId=langhua.public" />
            <arg
value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
            <arg value="-DgroupId=opencms" />
            <arg value="-DartifactId=opencms" />
            <arg value="-Dversion=${version.number}" />
            <arg value="-Dpackaging=jar" />
        </exec>

        <!-- upload opencms-setup.jar and opencms-setup-sources.jar -->
        <exec executable="${mvn}">
            <arg value="deploy:deploy-file" />
            <arg value="-Dfile=
${opencms.output.sources.jars}/opencms-setup-sources.jar" />
            <arg value="-DrepositoryId=langhua.public" />
            <arg
value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
            <arg value="-DgroupId=opencms" />
            <arg value="-DartifactId=opencms-setup" />
            <arg value="-Dversion=${version.number}" />
            <arg value="-Dpackaging=sources.jar" />
        </exec>
        <exec executable="${mvn}">
            <arg value="deploy:deploy-file" />
            <arg value="-Dfile=
${opencms.output.jars}/opencms-setup.jar" />
            <arg value="-DrepositoryId=langhua.public" />
            <arg
value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
            <arg value="-DgroupId=opencms" />
            <arg value="-DartifactId=opencms-setup" />
            <arg value="-Dversion=${version.number}" />
            <arg value="-Dpackaging=jar" />
        </exec>

        <!-- upload upload.jar and upload-sources.jar -->
        <exec executable="${mvn}">
            <arg value="deploy:deploy-file" />
            <arg value="-Dfile=
${opencms.output.sources.jars}/upload-sources.jar" />
            <arg value="-DrepositoryId=langhua.public" />
            <arg
value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
            <arg value="-DgroupId=opencms" />
            <arg value="-DartifactId=opencms-upload" />
            <arg value="-Dversion=${version.number}" />
            <arg value="-Dpackaging=sources.jar" />
        </exec>
        <exec executable="${mvn}">
            <arg value="deploy:deploy-file" />
            <arg value="-Dfile=${opencms.output}/upload/upload.jar" />
            <arg value="-DrepositoryId=langhua.public" />
            <arg
value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
            <arg value="-DgroupId=opencms" />
            <arg value="-DartifactId=opencms-upload" />
            <arg value="-Dversion=${version.number}" />
            <arg value="-Dpackaging=jar" />
        </exec>
    </target>


2. Add the following in ${opencms-7.5.0}/modules/build.xml:
    <target name="maven2dist"
        depends="init" description="Generates the given .jar and
sources.jar files">
   
        <ant antfile="${opencms.input}/build.xml" dir="${opencms.input}"
inheritall="false" target="jar"/>
        <for list="${modules.var}" param="module" trim="yes">
          <sequential>
            <ant antfile="${basedir}/build-single.xml"
target="maven2dist" inheritAll="false" >
                <property name="module.name" value="@{module}" />
            </ant>
          </sequential>
        </for>
    </target>


3. Add the following in ${opencms-7.5.0}/modules/build-single.xml:
        <property name="opencms.output.sources.jars"
                location="${opencms.output}/build/sources-jars" />

        <target name="sources.jar" depends="init, builddeps"
                description="Build sources.jar">

                <if>
                        <not>
                                <equals arg1="${src.mode}" arg2="none" />
                        </not>
                        <then>
                                <mkdir dir="${module.output.classes}" />

                                <var name="module.dependencies.path" value="." />
                                <for list="${module.dependencies}" param="dependency"
                                        trim="true">
                                        <sequential>
                                                <if>
                                                        <available
                                                                file="${@{dependency}.output.jar}" />
                                                        <then>
                                                                <for param="archive">
                                                                        <fileset
                                                                                dir="${@{dependency}.output.jar}">
                                                                                <include name="**/*.jar" />
                                                                        </fileset>
                                                                        <sequential>
                                                                                <var
                                                                                        name="module.dependencies.path"
                                                                                        value="${module.dependencies.path}:@{archive}" />
                                                                        </sequential>
                                                                </for>
                                                        </then>
                                                </if>
                                        </sequential>
                                </for>
                                <!--echo message="${module.dependencies.path}" /-->

                                <var name="module.libs.path" value="." />
                                <if>
                                        <available file="${module.input.lib}" />
                                        <then>
                                                <for param="archive">
                                                        <path>
                                                                <fileset dir="${module.input.lib}"
                                                                        includes="*.jar" />
                                                        </path>
                                                        <sequential>
                                                                <var name="module.libs.path"
                                                                        value="${module.libs.path}:@{archive}" />
                                                        </sequential>
                                                </for>
                                        </then>
                                </if>
                                <!--echo message="${module.libs.path}" /-->

                                <if>
                                        <equals arg1="${src.mode}" arg2="shared" />
                                        <then>
                                                <jar

jarfile="${opencms.output.sources.jars}/${module.name}-sources.jar">
                                                        <fileset dir="${module.input.src.shared}"
                                                                includes="${module.package}/*.java" />
                                                        <zipfileset dir="${opencms.input}"
                                                                prefix="META-INF" includes="license.txt" />
                                                </jar>
                                        </then>
                                        <else>
                                                <if>
                                                        <equals arg1="${src.mode}"
                                                                arg2="multishared" />
                                                        <then>
                                                                <for list="${module.packages}"
                                                                        param="mpackage" trim="true">
                                                                        <sequential>
                                                                                <var name="package.dir"
                                                                                        value="" />
                                                                                <for list="@{mpackage}"
                                                                                        param="package" delimiter="." trim="true">
                                                                                        <sequential>
                                                                                                <var
                                                                                                        name="module.input.src.test"
                                                                                                        value="${module.input.src.test}/@{package}" />
                                                                                                <var name="package.dir"
                                                                                                        value="${package.dir}@{package}/" />
                                                                                        </sequential>
                                                                                </for>
                                                                                <jar

jarfile="${opencms.output.sources.jars}/${module.name}-sources.jar">
                                                                                        <fileset
                                                                                                dir="${module.input.src.shared}"
                                                                                                includes="${package.dir}/*.java" />
                                                                                        <zipfileset
                                                                                                dir="${opencms.input}" prefix="META-INF"
                                                                                                includes="license.txt" />
                                                                                </jar>
                                                                        </sequential>
                                                                </for>
                                                        </then>
                                                        <else>
                                                                <jar

jarfile="${opencms.output.sources.jars}/${module.name}-sources.jar">
                                                                        <fileset
                                                                                dir="${module.input.src.single}" includes="**/*.java" />
                                                                        <zipfileset dir="${opencms.input}"
                                                                                prefix="META-INF" includes="license.txt" />
                                                                </jar>
                                                        </else>
                                                </if>
                                        </else>
                                </if>
                        </then>
                </if>
        </target>

        <target name="maven2dist" depends="jar, sources.jar"
                description="Creates jar and sources.jar and upload them to maven2
repository">

                <property name="mvn" location="/opt/maven/bin/mvn" />
                <if>
                        <available file="${module.output.jar}" />
                        <then>
                                <!-- upload jar to maven2 repository -->
                                <exec executable="${mvn}">
                                        <arg value="deploy:deploy-file" />
                                        <arg
                                                value="-Dfile=${module.output.jar}/${module.name}.jar" />
                                        <arg value="-DrepositoryId=langhua.public" />
                                        <arg

value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
                                        <arg value="-DgroupId=opencms" />
                                        <arg value="-DartifactId=${module.name}" />
                                        <arg value="-Dversion=${version.number}" />
                                        <arg value="-Dpackaging=jar" />
                                </exec>
                        </then>
                </if>
                <if>
                        <available
file="${opencms.output.sources.jars}/${module.name}-sources.jar" />
                        <then>
                                <!-- upload sources.jar to maven2 repository -->
                                <exec executable="${mvn}">
                                        <arg value="deploy:deploy-file" />
                                        <arg
                                                value="-Dfile=
${opencms.output.sources.jars}/${module.name}-sources.jar" />
                                        <arg value="-DrepositoryId=langhua.public" />
                                        <arg

value="-Durl=http://maven2.langhua.org/archiva/repository/public/" />
                                        <arg value="-DgroupId=opencms" />
                                        <arg value="-DartifactId=${module.name}" />
                                        <arg value="-Dversion=${version.number}" />
                                        <arg value="-Dpackaging=sources.jar" />
                                </exec>
                        </then>
                </if>
        </target>

Regards,

Shi Yusen/Beijing Langhua Ltd.


在 2009-07-02四的 10:49 +0100,Achim Westermann写道:

> Hi Shi,
>
> thanks a lot! I currently work in a project where we get our
> dependencies via ANT / Eclipse -> Ivy... and opencms had to be put to a
> local repository.
>
>
> Kind Regards,
> Achim.
>
> -------------------
> Achim Westermann
>
> Alkacon Software GmbH  - The OpenCms Experts
> http://www.alkacon.com - http://www.opencms.org
>
>
>
> Shi Yusen schrieb:
> > Hi list,
> >
> > We have setup a public OpenCms Maven2 Repository using Apache Archiva.
> > The repository is here:
> > http://maven2.langhua.org/public/opencms/
> >
> > You can use Archiva to browse it:
> > http://langhua.org/portal/portal/default/iframe?pageurl=http://maven2.langhua.org/archiva/browse/opencms
> >        
> > Currently, there are OpenCms 7.0.5 and 7.5.0 in the repository. If you
> > find anything wrong or missing, please feed back to me.
> >
> > Have fun,
> >
> > Shi Yusen/Beijing Langhua Ltd.
> >
> >
> > _______________________________________________
> > This mail is sent to you from the opencms-dev mailing list
> > To change your list options, or to unsubscribe from the list, please visit
> > http://lists.opencms.org/mailman/listinfo/opencms-dev
>
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev


_______________________________________________
This mail is sent to you from the opencms-dev mailing list
To change your list options, or to unsubscribe from the list, please visit
http://lists.opencms.org/mailman/listinfo/opencms-dev

 « Return to Thread: We have setup a public OpenCms Maven2 Repository