private void addSourcePath(Resource resource, Javadoc javadoc, Path source) { // // handle the target resource // if (null != resource.getBaseDir()) { File src = new File(resource.getBaseDir(), "target/build/main"); if (src.exists()) { log("Adding src path: " + src); source.createPathElement().setLocation(src); final DirSet packages = new DirSet(); packages.setDir(src); packages.setIncludes("**/*"); String excludes = getPackageExcludes(resource); if (null != excludes) { packages.setExcludes(excludes); } javadoc.addPackageset(packages); } } // add providers String path = resource.getResourcePath(); Resource[] providers = resource.getAggregatedProviders(Scope.RUNTIME, true, false); for (int i = 0; i < providers.length; i++) { Resource provider = providers[i]; if (provider.getResourcePath().startsWith(path)) { String flag = provider.getProperty("project.javadoc.exclude", "false"); if ("false".equals(flag)) { File basedir = provider.getBaseDir(); if (null != basedir) { File src = new File(basedir, "target/build/main"); if (src.exists()) { log("Adding src path: " + src); source.createPathElement().setLocation(src); final DirSet packages = new DirSet(); packages.setDir(src); packages.setIncludes("**/**"); String excludes = getPackageExcludes(provider); if (null != excludes) { packages.setExcludes(excludes); } javadoc.addPackageset(packages); } } } } } }
private void aggregateLinks(Javadoc task, Resource resource) { String path = resource.getResourcePath(); ArrayList list = new ArrayList(); Resource[] providers = resource.getAggregatedProviders(Scope.RUNTIME, true, false); for (int i = 0; i < providers.length; i++) { Resource provider = providers[i]; if (!provider.getResourcePath().startsWith(path)) { String source = provider.getProperty("project.api.root"); if (null != source) { log("Adding provider link: " + source + " from " + provider); Javadoc.LinkArgument arg = task.createLink(); arg.setHref(source); } } } }
private void process(final Resource resource, final Path classpath, final File root) { log("Preparing javadoc for output to: " + root); final Javadoc javadoc = (Javadoc) getProject().createTask(JAVADOC_TASK_NAME); javadoc.setTaskName(getTaskName()); javadoc.init(); javadoc.setDestdir(root); javadoc.setUse(true); javadoc.createClasspath().add(classpath); String excludes = getPackageExcludes(); if (null != excludes) { javadoc.setExcludePackageNames(excludes); } Javadoc.PackageName[] excludesList = m_excludes.toArray(new Javadoc.PackageName[0]); for (Javadoc.PackageName exclude : excludesList) { javadoc.addExcludePackage(exclude); } final Path source = javadoc.createSourcepath(); addSourcePath(resource, javadoc, source); if (null == m_access) { String access = getContext().getProperty(JAVADOC_ACCESS_KEY, "protected"); AccessType type = new AccessType(); type.setValue(access); javadoc.setAccess(type); } else { javadoc.setAccess(m_access); } if ("true".equals(getContext().getProperty(JAVADOC_LINK_SOURCE_KEY, "false"))) { javadoc.setLinksource(true); } aggregateLinks(javadoc, resource); Link[] links = m_links.toArray(new Link[0]); for (int i = 0; i < links.length; i++) { Link link = links[i]; Javadoc.LinkArgument arg = javadoc.createLink(); String href = link.getHref(); log("Adding link: " + href); arg.setHref(href); } final String title = resource.getName() + " API"; if (null != m_windowTitle) { javadoc.setWindowtitle(m_windowTitle); } else { javadoc.setWindowtitle(title); } if (null == m_title) { javadoc.setDoctitle(title); } else { javadoc.setDoctitle(m_title); } if (null != m_overview) { javadoc.setOverview(m_overview); } Group[] groups = getGroups(); for (int i = 0; i < groups.length; i++) { Group group = groups[i]; Javadoc.GroupArgument jgroup = javadoc.createGroup(); jgroup.setTitle(group.getTitle()); Group.Package[] packages = group.getPackages(); for (int j = 0; j < packages.length; j++) { Javadoc.PackageName name = new Javadoc.PackageName(); name.setName(packages[j].getName()); jgroup.addPackage(name); } } log("Generating: " + resource.getName() + " API"); javadoc.execute(); }