Hi,

we have a http proxy at work that needs authentication. If I want to
have links in my Javadocs to other libraries I use, I can't use the
normal mechanism
(http://maven.apache.org/reference/plugins/javadoc/faq.html#firewall).

However, plugin:download manages to get through the firewall, so the
javadoc should be able to do it also. I changed the goal
"maven-javadoc-plugin:report" in the javadoc plugin like this:

        <j:set var="proxyOnline" value="${maven.javadoc.mode.proxy.online}"/>
        <ant:echo>proxy mode: ${proxyOnline}</ant:echo>
        <j:choose>
                <j:when test="${proxyOnline}">
                        <!-- Use proxy only mode-->
                          <ant:mkdir dir="${maven.build.dir}/packagelists"/>
                          <util:tokenize var="links" delim=","
trim="true">${maven.javadoc.links}</util:tokenize>
                          <j:forEach var="link" items="${links}" 
indexVar="linkNr">
                                <ant:echo>Downloading API information from 
${link.trim()} ...</ant:echo>
                                <j:set var="remoteFile" 
value="${link.trim()}package-list"/>
                                <util:file var="localFile"
                                  
name="${maven.build.dir}/packagelists/${linkNr}-package-list" />
                                <ant:echo>downloading ${remoteFile} to 
${localFile}</ant:echo>
                                <j:catch var="ex">
                                  <j:invokeStatic var="dummy" method="getFile"
                                        
className="org.apache.maven.util.HttpUtils">
                                        <j:arg type="java.lang.String" 
value="${remoteFile}" />
                                        <j:arg type="java.io.File" 
value="${localFile}"/>
                                        <j:arg type="boolean" value="false"/>
                                        <j:arg type="boolean" value="true"/>
                                        <j:arg type="java.lang.String" 
value="${maven.proxy.host}" />
                                        <j:arg type="java.lang.String" 
value="${maven.proxy.port}" />
                                        <j:arg type="java.lang.String" 
value="${maven.proxy.username}" />
                                        <j:arg type="java.lang.String" 
value="${maven.proxy.password}" />
                                        <j:arg type="boolean" value="false"/>
                                  </j:invokeStatic>
                                </j:catch>
                                <ant:echo>${ex}</ant:echo>
                                <ant:echo>${ex.printStacktrace()}</ant:echo>
                          </j:forEach>                    
                </j:when>
                <j:otherwise>

                          <!-- calculate online/offline mode -->
                          <j:set var="online" 
value="${maven.javadoc.mode.online}"/>
                          <j:if test="${empty(online)}">
                                <j:set var="online" 
value="${maven.mode.online}"/>
                          </j:if>

                          <j:choose>
                                <j:when test="${online}">
                                  <util:tokenize var="links" delim=","
trim="true">${maven.javadoc.links}</util:tokenize>
                                  <j:forEach var="link" items="${links}">
                                        <ant:echo>Linking with API information 
from ${link.trim()} ...</ant:echo>
                                  </j:forEach>
                                </j:when>
                                <j:otherwise>
                                  <util:tokenize var="links" delim=","
trim="true">${maven.javadoc.offlineLinks}</util:tokenize>
                                  <j:forEach var="link" items="${links}">
                                        <ant:echo>Linking offline API 
information from ${link.trim()}
...</ant:echo>
                                  </j:forEach>
                                </j:otherwise>
                          </j:choose>

                </j:otherwise>
        </j:choose>


Basically, it uses the HttpUtils class to download the package-list's
into a directory 'package-lists'. To make a difference, I prepended
the files with a number.

Suppose I have this:
maven.javadoc.links=http://java.sun.com/j2se/1.5.0/docs/api/,http://jakarta.apache.org/commons/lang/api/

I can now generate the offline links
(http://maven.apache.org/reference/plugins/javadoc/faq.html#offlineLinks):

maven.javadoc.offlineLinks=http://java.sun.com/j2se/1.5.0/docs/api/#${path.to.downloaded.packagelists}/1-package-list,http://jakarta.apache.org/commons/lang/api/#${path.to.downloaded.packagelists}/2-package-list

then I only need to set the mode to offline, and I should get nice
links in my javadocs.

How can I create that "maven.javadoc.offlineLinks" variabel on the fly?

regards,

Wim

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to