Commit 573452d9 authored by Eric Bruneton's avatar Eric Bruneton

Add a task to check the Javadoc on private members and fix the Javadoc errors found with it.

parent f5de3148
Pipeline #390 passed with stage
in 10 minutes and 35 seconds
......@@ -1168,6 +1168,7 @@ public class GeneratorAdapter extends LocalVariablesSorter {
* @param opcode the instruction's opcode.
* @param type the class in which the method is defined.
* @param method the method to be invoked.
* @param itf whether the 'type' class is an interface or not.
*/
private void invokeInsn(
final int opcode, final Type type, final Method method, final boolean itf) {
......
......@@ -382,6 +382,8 @@ public class JSRInlinerAdapter extends MethodNode implements Opcodes {
* @param newInstructions the instruction list to which the instantiated code must be appended.
* @param newTryCatchBlocks the exception handler list to which the instantiated handlers must be
* appended.
* @param newLocalVariables the local variables list to which the instantiated local variables
* must be appended.
*/
private void emitSubroutine(
final Instantiation instant,
......
......@@ -950,6 +950,7 @@ public class CheckClassAdapter extends ClassVisitor {
/**
* Checks a single character.
*
* @param c a character.
* @param signature a string containing the signature that must be checked.
* @param pos index of first character to be checked.
* @return the index of the first character after the checked part.
......
......@@ -470,8 +470,8 @@ public class Processor {
}
/**
* A {@link ContentHandlerFactory ContentHandlerFactory} is used to create {@link
* org.xml.sax.ContentHandler ContentHandler} instances for concrete context.
* A {@link ContentHandlerFactory} is used to create {@link ContentHandler} instances for concrete
* context.
*/
private static interface ContentHandlerFactory {
......@@ -564,19 +564,11 @@ public class Processor {
}
/**
* A {@link org.xml.sax.ContentHandler ContentHandler} and {@link org.xml.sax.ext.LexicalHandler
* LexicalHandler} that serializes XML from SAX 2.0 events into {@link java.io.Writer Writer}.
* A {@link ContentHandler} and {@link LexicalHandler } that serializes XML from SAX 2.0 events
* into {@link Writer}.
*
* <p><i>
*
* <blockquote>
*
* This implementation does not support namespaces, entity definitions (uncluding DTD), CDATA and
* text elements.
*
* </blockquote>
*
* </i>
* <p><i>This implementation does not support namespaces, entity definitions (uncluding DTD),
* CDATA and </i>
*/
private static final class SAXWriter extends DefaultHandler implements LexicalHandler {
private static final char[] OFF =
......@@ -756,11 +748,9 @@ public class Processor {
}
/**
* A {@link org.xml.sax.ContentHandler ContentHandler} that splits XML documents into smaller
* chunks. Each chunk is processed by the nested {@link org.xml.sax.ContentHandler ContentHandler}
* obtained from {@link java.net.ContentHandlerFactory ContentHandlerFactory}. This is useful for
* running XSLT engine against large XML document that will hardly fit into the memory all
* together.
* A {@link ContentHandler} that splits XML documents into smaller chunks. Each chunk is processed
* by the nested {@link ContentHandler}. This is useful for running XSLT engine against large XML
* document that will hardly fit into the memory all together.
*
* <p>TODO use complete path for subdocumentRoot
*/
......@@ -776,12 +766,12 @@ public class Processor {
private ContentHandler subdocumentHandler;
/**
* Constructs a new {@link InputSlicingHandler SubdocumentHandler} object.
* Constructs a new {@link InputSlicingHandler} object.
*
* @param subdocumentRoot name/path to the root element of the subdocument
* @param rootHandler content handler for the entire document (subdocument envelope).
* @param subdocumentHandlerFactory a {@link ContentHandlerFactory ContentHandlerFactory} used
* to create {@link ContentHandler ContentHandler} instances for subdocuments.
* @param subdocumentHandlerFactory a {@link ContentHandlerFactory} used to create {@link
* ContentHandler} instances for subdocuments.
*/
InputSlicingHandler(
final String subdocumentRoot,
......@@ -851,11 +841,10 @@ public class Processor {
}
/**
* A {@link org.xml.sax.ContentHandler ContentHandler} that splits XML documents into smaller
* chunks. Each chunk is processed by the nested {@link org.xml.sax.ContentHandler ContentHandler}
* obtained from {@link java.net.ContentHandlerFactory ContentHandlerFactory}. This is useful for
* running XSLT engine against large XML document that will hardly fit into the memory all
* together.
* A {@link ContentHandler} that splits XML documents into smaller chunks. Each chunk is processed
* by the nested {@link ContentHandler} obtained from {@link ContentHandlerFactory}. This is
* useful for running XSLT engine against large XML document that will hardly fit into the memory
* all together.
*
* <p>TODO use complete path for subdocumentRoot
*/
......@@ -873,10 +862,10 @@ public class Processor {
private ContentHandler subdocumentHandler;
/**
* Constructs a new {@link OutputSlicingHandler SubdocumentHandler} object.
* Constructs a new {@link OutputSlicingHandler} object.
*
* @param subdocumentHandlerFactory a {@link ContentHandlerFactory ContentHandlerFactory} used
* to create {@link ContentHandler ContentHandler} instances for subdocuments.
* @param subdocumentHandlerFactory a {@link ContentHandlerFactory} used to create {@link
* ContentHandler} instances for subdocuments.
* @param entryElement TODO.
* @param isXml TODO.
*/
......
......@@ -31,12 +31,12 @@ package org.objectweb.asm;
* An {@link AnnotationVisitor} that generates a corresponding 'annotation' or 'type_annotation'
* structure, as defined in the Java Virtual Machine Specification (JVMS). AnnotationWriter
* instances can be chained in a doubly linked list, from which Runtime[In]Visible[Type]Annotations
* attributes can be generated with the {@link #putAnnotations()} method. Similarly, arrays of such
* attributes can be generated with the {@link #putAnnotations} method. Similarly, arrays of such
* lists can be used to generate Runtime[In]VisibleParameterAnnotations attributes.
*
* @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.16">JVMS
* 4.7.16</a>
* @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.20>JVMS
* @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.20">JVMS
* 4.7.20</a>
* @author Eric Bruneton
* @author Eugene Kuleshov
......
......@@ -55,7 +55,11 @@ public class ByteVector {
data = new byte[initialCapacity];
}
/** Constructs a new {@link ByteVector} from the given initial data. */
/**
* Constructs a new {@link ByteVector} from the given initial data.
*
* @param data the initial data of the new byte vector.
*/
ByteVector(final byte[] data) {
this.data = data;
this.length = data.length;
......@@ -269,7 +273,7 @@ public class ByteVector {
/**
* Puts an UTF8 string into this byte vector. The byte vector is automatically enlarged if
* necessary. The string length is encoded in two bytes before the encoded characters, if there is
* space for that (i.e. if this.length - offset - 2 >= 0).
* space for that (i.e. if this.length - offset - 2 &gt;= 0).
*
* @param stringValue the String to encode.
* @param offset the index of the first character to encode. The previous characters are supposed
......
......@@ -918,7 +918,7 @@ public class ClassReader {
* @param context information about the class being parsed.
* @param moduleOffset the offset of the Module attribute (excluding the attribute_info's
* attribute_name_index and attribute_length fields).
* @param modulePackages the offset of the ModulePackages attribute (excluding the
* @param modulePackagesOffset the offset of the ModulePackages attribute (excluding the
* attribute_info's attribute_name_index and attribute_length fields), or 0.
* @param moduleMainClass the string corresponding to the ModuleMainClass attribute, or null.
*/
......
......@@ -33,7 +33,7 @@ package org.objectweb.asm;
*
* @author Eric Bruneton
*/
class Context {
final class Context {
/** Prototypes of the attributes that must be parsed in this class. */
Attribute[] attributePrototypes;
......@@ -105,8 +105,8 @@ class Context {
int currentFrameOffset;
/**
* The type of the current stack map frame. One of {@link Opcodes.F_FULL}, {@link
* Opcodes.F_APPEND}, {@link Opcodes.F_CHOP}, {@link Opcodes.F_SAME} or {@link Opcodes.F_SAME1}.
* The type of the current stack map frame. One of {@link Opcodes#F_FULL}, {@link
* Opcodes#F_APPEND}, {@link Opcodes#F_CHOP}, {@link Opcodes#F_SAME} or {@link Opcodes#F_SAME1}.
*/
int currentFrameType;
......@@ -126,7 +126,7 @@ class Context {
/**
* The types of the local variables in the current stack map frame. Each type is represented with
* a single array element (even long and double), using the format described in {@link
* MethodVisitor#visitFrame()}. Depending on {@link #currentFrameType}, this contains the types of
* MethodVisitor#visitFrame}. Depending on {@link #currentFrameType}, this contains the types of
* all the local variables, or only those of the additional ones (compared to the previous frame).
*/
Object[] currentFrameLocalTypes;
......@@ -140,7 +140,7 @@ class Context {
/**
* The types of the stack elements in the current stack map frame. Each type is represented with a
* single array element (even long and double), using the format described in {@link
* MethodVisitor#visitFrame()}.
* MethodVisitor#visitFrame}.
*/
Object[] currentFrameStackTypes;
}
......@@ -34,7 +34,7 @@ package org.objectweb.asm;
*
* @author Eric Bruneton
*/
class CurrentFrame extends Frame {
final class CurrentFrame extends Frame {
CurrentFrame(Label owner) {
super(owner);
......
......@@ -75,7 +75,13 @@ final class Edge {
*/
Edge nextEdge;
/** Creates a new Edge. */
/**
* Creates a new Edge.
*
* @param info see {@link #info}.
* @param successor see {@link #successor}.
* @param nextEdge see {@link #nextEdge}.
*/
Edge(final int info, final Label successor, final Edge nextEdge) {
this.info = info;
this.successor = successor;
......
......@@ -127,9 +127,9 @@ public class Label {
* byte of the forward reference itself. In fact the sign of the first integer indicates if this
* reference uses 2 or 4 bytes, and its absolute value gives the position of the bytecode
* instruction. This array is also used as a bitset to store the subroutines to which a basic
* block belongs. This information is needed in {@linked MethodWriter#visitMaxs}, after all
* forward references have been resolved. Hence the same array can be used for both purposes
* without problems.
* block belongs. This information is needed in {@link MethodWriter#visitMaxs}, after all forward
* references have been resolved. Hence the same array can be used for both purposes without
* problems.
*/
private int[] srcAndRefPositions;
......
......@@ -34,6 +34,7 @@ package org.objectweb.asm;
* <tt>visitEnd</tt>.
*
* @author Remi Forax
* @author Eric Bruneton
*/
public abstract class ModuleVisitor {
/**
......
......@@ -38,6 +38,7 @@ package org.objectweb.asm;
* @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.27">JVMS
* 4.7.27</a>
* @author Remi Forax
* @author Eric Bruneton
*/
final class ModuleWriter extends ModuleVisitor {
/** Where the constants used in this AnnotationWriter must be stored. */
......
......@@ -99,7 +99,9 @@ abstract class Symbol {
/** The tag value of a normal type entry in the (ASM specific) type table of a class. */
static final int TYPE_TAG = 128;
/** The tag value of an {@link Frame#UNINITIALIZED} type entry in the type table of a class. */
/**
* The tag value of an {@link Frame#ITEM_UNINITIALIZED} type entry in the type table of a class.
*/
static final int UNINITIALIZED_TYPE_TAG = 129;
/** The tag value of a merged type entry in the (ASM specific) type table of a class. */
......@@ -162,9 +164,9 @@ abstract class Symbol {
* <li>the CONSTANT_InvokeDynamic_info bootstrap_method_attr_index field value for {@link
* #CONSTANT_INVOKE_DYNAMIC_TAG} symbols,
* <li>the offset of a bootstrap method in the BootstrapMethods boostrap_methods array, for
* {@link #BOOTSTRAP_METHODS_TAG} symbols,
* <li>the bytecode offset of the NEW instruction that created an {@link Frame#UNINITIALIZED}
* type for {@link #UNINITIALIZED_TYPE_TAG} symbols,
* {@link #BOOTSTRAP_METHOD_TAG} symbols,
* <li>the bytecode offset of the NEW instruction that created an {@link
* Frame#ITEM_UNINITIALIZED} type for {@link #UNINITIALIZED_TYPE_TAG} symbols,
* <li>the indices (in the class' type table) of two {@link #TYPE_TAG} source types for {@link
* #MERGED_TYPE_TAG} symbols,
* <li>0 for the other types of symbol.
......@@ -223,7 +225,6 @@ abstract class Symbol {
* {@link #info} for efficiency). This should only be used for {@link
* #CONSTANT_METHODREF_TAG}, {@link #CONSTANT_INTERFACE_METHODREF_TAG} and {@link
* #CONSTANT_INVOKE_DYNAMIC_TAG} symbols.
* @return
*/
int getArgumentsAndReturnSizes() {
if (info == 0) {
......
......@@ -329,7 +329,7 @@ final class SymbolTable {
* class name to the constant pool.
*
* @param majorVersion a major ClassFile version number.
* @param name an internal class name
* @param className an internal class name.
* @return the constant pool index of a new or already existing Symbol with the given class name.
*/
int setMajorVersionAndClassName(int majorVersion, String className) {
......@@ -394,6 +394,7 @@ final class SymbolTable {
// -----------------------------------------------------------------------------------------------
/**
* @param hashCode a {@link Entry#hashCode} value.
* @return the list of entries which can potentially have the given hash code. The list is stored
* via the {@link Entry#next} field.
*/
......@@ -543,8 +544,8 @@ final class SymbolTable {
* the constant pool of this symbol table. Does nothing if the constant pool already contains a
* similar item.
*
* @param tag one of {@link #CONSTANT_FIELDREF_TAG}, {@link #CONSTANT_METHODREF_TAG} or {@link
* #CONSTANT_INTERFACE_METHODREF_TAG}.
* @param tag one of {@link Symbol#CONSTANT_FIELDREF_TAG}, {@link Symbol#CONSTANT_METHODREF_TAG}
* or {@link Symbol#CONSTANT_INTERFACE_METHODREF_TAG}.
* @param owner the internal name of a class.
* @param name a field or method name.
* @param descriptor a field or method descriptor.
......@@ -574,12 +575,11 @@ final class SymbolTable {
* to the constant pool of this symbol table.
*
* @param index the constant pool index of the new Symbol.
* @param tag one of {@link #CONSTANT_FIELDREF_TAG}, {@link #CONSTANT_METHODREF_TAG} or {@link
* #CONSTANT_INTERFACE_METHODREF_TAG}.
* @param tag one of {@link Symbol#CONSTANT_FIELDREF_TAG}, {@link Symbol#CONSTANT_METHODREF_TAG}
* or {@link Symbol#CONSTANT_INTERFACE_METHODREF_TAG}.
* @param owner the internal name of a class.
* @param name a field or method name.
* @param descriptor a field or method descriptor.
* @return a new Symbol with the given value.
*/
private void addConstantMemberReference(
final int index,
......@@ -627,7 +627,7 @@ final class SymbolTable {
* Adds a CONSTANT_Integer_info or CONSTANT_Float_info to the constant pool of this symbol table.
* Does nothing if the constant pool already contains a similar item.
*
* @param tag one of {@link #CONSTANT_INTEGER_TAG} or {@link #CONSTANT_FLOAT_TAG}.
* @param tag one of {@link Symbol#CONSTANT_INTEGER_TAG} or {@link Symbol#CONSTANT_FLOAT_TAG}.
* @param value an int or float.
* @return a constant pool constant with the given tag and primitive values.
*/
......@@ -649,9 +649,8 @@ final class SymbolTable {
* table.
*
* @param index the constant pool index of the new Symbol.
* @param tag one of {@link #CONSTANT_INTEGER_TAG} or {@link #CONSTANT_FLOAT_TAG}.
* @param tag one of {@link Symbol#CONSTANT_INTEGER_TAG} or {@link Symbol#CONSTANT_FLOAT_TAG}.
* @param value an int or float.
* @return a new Symbol with the given value.
*/
private void addConstantInteger(final int index, final int tag, final int value) {
add(new Entry(index, tag, value, hash(tag, value)));
......@@ -683,7 +682,7 @@ final class SymbolTable {
* Adds a CONSTANT_Long_info or CONSTANT_Double_info to the constant pool of this symbol table.
* Does nothing if the constant pool already contains a similar item.
*
* @param tag one of {@link #CONSTANT_LONG_TAG} or {@link #CONSTANT_DOUBLE_TAG}.
* @param tag one of {@link Symbol#CONSTANT_LONG_TAG} or {@link Symbol#CONSTANT_DOUBLE_TAG}.
* @param value a long or double.
* @return a constant pool constant with the given tag and primitive values.
*/
......@@ -706,9 +705,8 @@ final class SymbolTable {
* Adds a new CONSTANT_Double_info to the constant pool of this symbol table.
*
* @param index the constant pool index of the new Symbol.
* @param tag one of {@link #CONSTANT_LONG_TAG} or {@link #CONSTANT_DOUBLE_TAG}.
* @param tag one of {@link Symbol#CONSTANT_LONG_TAG} or {@link Symbol#CONSTANT_DOUBLE_TAG}.
* @param value a long or double.
* @return a new Symbol with the given value.
*/
private void addConstantLong(final int index, final int tag, final long value) {
add(new Entry(index, tag, value, hash(tag, value)));
......@@ -745,7 +743,6 @@ final class SymbolTable {
* @param index the constant pool index of the new Symbol.
* @param name a field or method name.
* @param descriptor a field or method descriptor.
* @return a new Symbol with the given value.
*/
private void addConstantNameAndType(final int index, final String name, final String descriptor) {
final int tag = Symbol.CONSTANT_NAME_AND_TYPE_TAG;
......@@ -779,7 +776,6 @@ final class SymbolTable {
*
* @param index the constant pool index of the new Symbol.
* @param value a string.
* @return a new Symbol with the given value.
*/
private void addConstantUtf8(final int index, final String value) {
add(new Entry(index, Symbol.CONSTANT_UTF8_TAG, value, hash(Symbol.CONSTANT_UTF8_TAG, value)));
......@@ -842,8 +838,6 @@ final class SymbolTable {
* @param owner the internal name of a class of interface.
* @param name a field or method name.
* @param descriptor a field or method descriptor.
* @param isInterface whether owner is an interface or not.
* @return a new Symbol with the given value.
*/
private void addConstantMethodHandle(
final int index,
......@@ -924,7 +918,6 @@ final class SymbolTable {
* @param name a method name.
* @param descriptor a method descriptor.
* @param bootstrapMethodIndex the index of a bootstrap method in the BootstrapMethods attribute.
* @return a new Symbol with the given value.
*/
private void addConstantInvokeDynamic(
final int index, final String name, final String descriptor, final int bootstrapMethodIndex) {
......@@ -960,8 +953,9 @@ final class SymbolTable {
* CONSTANT_Module_info or CONSTANT_Package_info to the constant pool of this symbol table. Does
* nothing if the constant pool already contains a similar item.
*
* @param tag one of {@link #CONSTANT_CLASS_TAG}, {@link #CONSTANT_STRING_TAG}, {@link
* #CONSTANT_METHOD_TYPE_TAG}, {@link #CONSTANT_MODULE_TAG} or {@link #CONSTANT_PACKAGE_TAG}.
* @param tag one of {@link Symbol#CONSTANT_CLASS_TAG}, {@link Symbol#CONSTANT_STRING_TAG}, {@link
* Symbol#CONSTANT_METHOD_TYPE_TAG}, {@link Symbol#CONSTANT_MODULE_TAG} or {@link
* Symbol#CONSTANT_PACKAGE_TAG}.
* @param value an internal class name, an arbitrary string, a method descriptor, a module or a
* package name, depending on tag.
* @return a new or already existing Symbol with the given value.
......@@ -984,11 +978,11 @@ final class SymbolTable {
* CONSTANT_Module_info or CONSTANT_Package_info to the constant pool of this symbol table.
*
* @param index the constant pool index of the new Symbol.
* @param tag one of {@link #CONSTANT_CLASS_TAG}, {@link #CONSTANT_STRING_TAG}, {@link
* #CONSTANT_METHOD_TYPE_TAG}, {@link #CONSTANT_MODULE_TAG} or {@link #CONSTANT_PACKAGE_TAG}.
* @param tag one of {@link Symbol#CONSTANT_CLASS_TAG}, {@link Symbol#CONSTANT_STRING_TAG}, {@link
* Symbol#CONSTANT_METHOD_TYPE_TAG}, {@link Symbol#CONSTANT_MODULE_TAG} or {@link
* Symbol#CONSTANT_PACKAGE_TAG}.
* @param value an internal class name, an arbitrary string, a method descriptor, a module or a
* package name, depending on tag.
* @return a new Symbol with the given value.
*/
private void addConstantUtf8Reference(final int index, final int tag, final String value) {
add(new Entry(index, tag, value, hash(tag, value)));
......@@ -1080,7 +1074,10 @@ final class SymbolTable {
// Type table entries management.
// -----------------------------------------------------------------------------------------------
/** @return the type table element whose index is given. */
/**
* @param typeIndex a type table index.
* @return the type table element whose index is given.
*/
Symbol getType(int typeIndex) {
return typeTable[typeIndex];
}
......@@ -1105,12 +1102,12 @@ final class SymbolTable {
}
/**
* Adds an {@link Frame#UNINITIALIZED} type in the type table of this symbol table. Does nothing
* if the type table already contains a similar type.
* Adds an {@link Frame#ITEM_UNINITIALIZED} type in the type table of this symbol table. Does
* nothing if the type table already contains a similar type.
*
* @param value an internal class name.
* @param bytecodeOffset the bytecode offset of the NEW instruction that created this {@link
* Frame#UNINITIALIZED} type value.
* Frame#ITEM_UNINITIALIZED} type value.
* @return the index of a new or already existing type Symbol with the given value.
*/
int addUninitializedType(final String value, final int bytecodeOffset) {
......@@ -1133,11 +1130,12 @@ final class SymbolTable {
* Adds a merged type in the type table of this symbol table. Does nothing if the type table
* already contains a similar type.
*
* @param typeTableIndex1 a {@link #TYPE_TAG} type, specified by its index in the type table.
* @param typeTableIndex2 another {@link #TYPE_TAG} type, specified by its index in the type
* @param typeTableIndex1 a {@link Symbol#TYPE_TAG} type, specified by its index in the type
* table.
* @param typeTableIndex2 another {@link Symbol#TYPE_TAG} type, specified by its index in the type
* table.
* @return the index of a new or already existing {@link #TYPE_TAG} type Symbol, corresponding to
* the common super class of the given types.
* @return the index of a new or already existing {@link Symbol#TYPE_TAG} type Symbol,
* corresponding to the common super class of the given types.
*/
int addMergedType(final int typeTableIndex1, final int typeTableIndex2) {
// TODO sort the arguments? The merge result should be independent of their order.
......
......@@ -167,8 +167,8 @@ public class TypeReference {
* The target_type and target_info structures - as defined in the Java Virtual Machine
* Specification (JVMS) - corresponding to this type reference. target_type uses one byte, and all
* the target_info union fields use up to 3 bytes (except localvar_target, handled with the
* specific method {@link MethodVisitor#visitLocalVariableAnnotation()}). Thus, both structures
* can be stored in an int.
* specific method {@link MethodVisitor#visitLocalVariableAnnotation}). Thus, both structures can
* be stored in an int.
*
* <p>This int field stores target_type (called the TypeReference 'sort' in the public API of this
* class) in its most significant byte, followed by the target_info fields. Depending on
......
......@@ -54,7 +54,7 @@ public class SignatureWriter extends SignatureVisitor {
* boolean encoded in one bit. The top of the stack is the least significant bit. Pushing false =
* *2, pushing true = *2+1, popping = /2.
*
* <p>Class type arguments must be surrounded with '<' and '>' and, because
* <p>Class type arguments must be surrounded with '&lt;' and '&gt;' and, because
*
* <ol>
* <li>class types can be nested (because type arguments can themselves be class types),
......
......@@ -307,6 +307,16 @@ configure(subprojects.findAll { it.provides }) {
}
}
// Add a task to generate a private javadoc and add it as a dependency of the
// 'check' task.
task privateJavadoc(type: Javadoc) {
source = sourceSets.main.allJava
classpath = configurations.compile
destinationDir = file("${javadoc.destinationDir}-private")
options.memberLevel = JavadocMemberLevel.PRIVATE
}
check.dependsOn privateJavadoc
// Add tasks to generate the Javadoc and a source jar, to be uploaded to Maven
// together with the main jar (containing the compiled code).
task javadocJar(type: Jar, dependsOn: 'javadoc') {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment