源代码和Javadoc jar生成

源代码和Javadoc jar生成,java,build,jar,Java,Build,Jar,我想我的问题很简单。然而,令人惊讶的是,我找不到任何简单的解决办法 我正在Netbeans上开发一个开源Java库项目,和其他许多项目一样,我希望将其发布为binary.jar、source.jar和javadoc.jar 有没有办法在Netbeans上自动生成它们?我知道马文能做到。但学习曲线似乎太长了 有一个类似的问题,但唯一的答案不起作用:试试ant。它比maven更容易学习,可以编译代码。maven插件可能是您的答案 <plugin> <groupId>o

我想我的问题很简单。然而,令人惊讶的是,我找不到任何简单的解决办法

我正在Netbeans上开发一个开源Java库项目,和其他许多项目一样,我希望将其发布为binary.jar、source.jar和javadoc.jar

有没有办法在Netbeans上自动生成它们?我知道马文能做到。但学习曲线似乎太长了


有一个类似的问题,但唯一的答案不起作用:

试试ant。它比maven更容易学习,可以编译代码。

maven插件可能是您的答案

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.7</version>
    <executions>
        <execution>
            <goals>
                <goal>jar</goal>
            </goals>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.0.4</version>
    <executions>
        <execution>
            <goals>
                <goal>jar</goal>
            </goals>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>

org.apache.maven.plugins
maven javadoc插件
2.7
罐子
包裹
org.apache.maven.plugins
maven源插件
2.0.4
罐子
包裹
使用,您可以轻松地生成javadoc、编译、创建JAR和zip文件。
这比在netbeans中做要好,因为如果有人想贡献,他可以用自己喜欢的IDE来做。

如果您正在开发一个库,其他人可能会帮助您开发,那么您应该考虑使用它


通过这种方式,您的项目将独立于您的IDE,并且依赖关系、测试和部署将集中处理,而不是自己进行。m

这是所有maven配置,您需要将源代码和javadoc自动附加到构建:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <id>attach-javadoc</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.1.2</version>
            <executions>
                <execution>
                    <id>attach-source</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins
maven javadoc插件
2.7
附加javadoc
罐子
org.apache.maven.plugins
maven源插件
2.1.2
附加源
罐子

这还不算太糟糕,是吗?

这是我最后提出的解决方案。它使用Ant并生成javadoc和源jar。然后将二进制jar、javadoc、source.jar、许可证和自述文件归档到一个zip文件中,以便发布

 <target name="-pre-init">
    <property file="version.properties"/>
    <property name="dist.jar" value="dist/${ant.project.name}-${project.version}.jar"/>
</target>

<target description="bundle sources in a jar" name="package-sources">
    <jar basedir="src" destfile="build/release/${ant.project.name}-${project.version}-sources.jar"/>
</target>


<target name="package_for_release" depends="jar,javadoc, package-sources">
    <mkdir dir="build/release"/>
    <copy file="${dist.jar}" todir="build/release/"/>
    <copy file="licence.txt" todir="build/release/"/>
    <copy file="beni_oku.txt" todir="build/release/"/>
    <mkdir dir="build/release/doc"/>
    <copy todir="build/release/doc">
        <fileset dir="dist/javadoc" includes="**"/>
    </copy>

    <zip basedir="build/release/" includes="**" destfile="dist/${ant.project.name}-${project.version}.zip"/>
</target>

在NetBeans中打开build.xml,然后右键单击->运行目标->[其他目标]->打包发布


脚本从属性文件获取版本号。我从中得到这个解决方案。

a)我认为maven解决方案的学习曲线要比手动解决方案的学习曲线低得多b)请定义“不起作用”只是更仔细地阅读您的问题。然而,对于一个简单的项目来说,Maven并不代表太大的学习曲线,依我的经验,情况正好相反。我们使用ant构建脚本用源代码和几个jar文件构建应用程序。后来我们转向maven,我的印象是它的自动lib获取功能更强大。但我对这两方面的经验都很有限。@seanizer:有不同种类的硬软件。Ant更易于使用和增量学习,因为您不必围绕它来组织您的项目。@Michael,这正是Ant的难点所在。对于maven,您必须进行一次转换,然后启动并运行;对于ant,您必须不断调整并不断思考为什么事情不能像您期望的那样工作。对于maven,所有插件都以一种自然的方式一起工作,因为下面有一个每个人都使用的定义良好的模型。@kasten maven的两个关键特性是a)自动依赖关系管理和b)约定优于配置(例如,你可以通过查询适当的属性来确定事物的位置)。ant的主要特点是你可以做任何事情,但这也是我认为的主要缺陷。@seanizer:据我所知,有些人对maven的行为产生了非常糟糕的体验,maven表现得不“自然”,wnd虽然我确信使用大型复杂的maven配置比使用大型复杂的ant脚本要容易得多,但如果你只想执行X,ant允许你这样做,而不需要你的右臂、你的长子和你不朽的灵魂。是吗?我只批评ant,因为它的代码编写和调试都很糟糕。说真的:你可以p groupid、执行id和插件版本,这段代码会更短,但我更愿意详细说明。