当前位置: 首页 > 面试题库 >

无法添加此项目,因为它不会使用Ant脚本生成JAR文件

袁骏祥
2023-03-14
问题内容

在这里提出我的问题之后,我现在提出了这个问题。我正在使用NetBeans 8。

我已经创建了一个Maven项目,我们将其命名为MyLibMaven(我使用了New Project-> Maven-> Java
Aplication),然后将我的库(我们将其命名为MyLib)移入了该Maven项目。

现在,当我进入常规的Java项目(我们称其为MyProject),并尝试将MyLibMaven作为库添加到MyProject时,我在Netbeans中看到以下弹出窗口:

This project cannot be added because it does not produce a JAR file using an Ant script

我在这里做错了什么?

这是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dwnz.my.lib</groupId>
    <artifactId>MyLib</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <name>MyLib</name>

    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>17.0</version>
        </dependency>
    </dependencies>
</project>

////////////////////////// EDIT ////////////////////////// //////

我将项目移至maven项目,并将MyLibMaven添加为依赖项。但是现在当我尝试运行我的项目时,我得到了这个失败的错误:

--- exec-maven-plugin:1.2.1:exec (default-cli) @ TeseMaven ---
Could not load the icon: /view/images/enable-server-icon.png
Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
    at view.toolbar.ToolBar.createIcon(ToolBar.java:171)
    at view.toolbar.ToolBar.<init>(ToolBar.java:53)
    at view.MainFrame.<init>(MainFrame.java:98)
    at view.MainFrame.newInstance(MainFrame.java:586)
    at view.Main.main(Main.java:98)
------------------------------------------------------------------------

------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 2.382s
Finished at: Wed Jul 23 02:13:22 BST 2014
Final Memory: 5M/126M
------------------------------------------------------------------------
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (default-cli) on project MyProjectMaven: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

问题答案:

您遇到的主要问题是…

  1. 将Netbeans项目作为库添加到现有Netbeans项目中仅适用于“ Netbeans Project”(蚂蚁)项目类型。
  2. 您需要从Maven项目中添加生成的Jar,并将其所有依赖项添加到“ Netbeans”项目中。因为“ Netbeans(Ant)项目”无法解决依赖关系,所以您必须手动解决这些依赖关系并将每个Jar文件添加为库条目。
  3. 您的Maven项目仅为您的项目生成Jar,不包含项目依赖项中的类/ jar。

您至少有两个基本选择…

你可以…

指示Maven在构建过程中包括所有依赖项。有(至少)两种方法可以实现此目的。您可以将所有类包含在单个Jar中,或者让Maven将所有依赖项复制到指定位置并更新class- path清单条目。

我个人更喜欢第二种选择,但这是个人的事情。作为我的Maven构建过程的一部分,我包括以下内容…

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <!--mainClass>com.acme.MainClass</mainClass-->
                    </manifest>
                </archive>
            </configuration>
        </plugin>

基本上,第一个插件将所有依赖项Jars复制到的lib目录中${project.build.directory}。这是个人的事情,但是我不喜欢将Jar的内容合并到单个“主”
Jar中,因为我倾向于拥有与我在项目中用作查找的名称相同的资源…

第二个插件包括class-path清单文件中的元素,以确保在运行时将依赖的jar包含在类加载器查找路径中。

如果要创建“单个”Jar,请看一下使用Maven在Jar中包含依赖项

你可以…

使您的第二个项目成为Maven项目,并包括您的第一个项目作为对它的依赖。然后,Maven将自动为您解决所有依赖项。这就是重点…



 类似资料:
  • 我的Intellij项目在IDE中完美地运行,但任何试图提取有效数据的方法。来自它的jar文件导致了某种错误。我的项目使用Maven、Spring和Apache Ignite。这是我的pom。xml文件: 清单: 并且,文件夹结构: 我列出了以下尝试: 1-在pom中运行mvn clean install。xml目录:编译得很好,但我得到的错误是相对于jar文件没有主清单属性。 2-我打开jar文

  • 我已经成功集成了Apache ant 现在,我试图生成负载测试的HTML报告,它工作得很好,直到我删除了test.jmx,test.jmx在文件夹C:\apache-ant-1.9.6\bin中 但由于我的测试计划名称和JTL文件名称不同,我删除了上面的测试。jmx和测试。html和build.xml中的指定名称: 但是现在在完成负载测试后,当我运行ant命令时,它会说: Cound 未找到 C:

  • 我正在尝试编写一个依赖于HTTPBuilder库的Groovy脚本。我正试图通过如下所示的Grab注释将其添加为脚本的依赖项 但当我运行此脚本时,我得到了一个错误: Java语言lang.RuntimeException:抓取葡萄时出错--[下载失败:commons lang#commons lang;2.4!commons-lang.jar] 我已经测试过使用Grab将其他依赖项添加到脚本中,同

  • 可以从jar文件中运行ant脚本吗? 目前,我有一个build.xml,它调用一些java代码,这些代码在一个jar文件中。然后它做一些进一步的蚂蚁处理。 当我从Eclipse导出jar文件时,我可以选择添加构建。xml文件到jar,所以我想知道我是否可以直接从jar运行ant脚本,这样我只需要给人们jar文件,而不是ant脚本。

  • 问题内容: 问题 我刚刚安装了Sonar Jenkins插件。我进入了配置的作业(自由样式作业),该作业通过ANT构建生成WAR文件工件,并且执行以下操作: 选中声纳复选框。(这里没有问题) 配置声纳的安装目录(这里没有问题) 选中以下复选框: “检查该项目是否不是用maven 2构建的” (我在这里感到困惑) 我已经选中了该框,因为我没有使用Maven进行构建,而是使用ANT,但它仍要求我提供类

  • 我在Java的早期版本中使用了Maven,但现在我正试图让它在Java 10中工作。我构建了一个简单的Hello world项目,具体来说: 公共课堂测试{ }使用模块信息类: 模块maven.test{导出main;} 与本项目相关的pom为: http://maven.apache.org/xsd/maven-4.0.0.xsd" 当我构建项目时,它成功构建。然后,我从Maven中央存储库添加