Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven向项目添加依赖项_Java_Maven_Jar_Dependencies - Fatal编程技术网

Java Maven向项目添加依赖项

Java Maven向项目添加依赖项,java,maven,jar,dependencies,Java,Maven,Jar,Dependencies,在eclipse中,您可以轻松地将依赖项(即JAR文件)添加到您的项目中。 右键单击项目,然后单击->构建路径->添加库 现在,在项目“.classpath”中创建了一个隐藏文件。 该文件中添加了一个classpathEntry,因此现在我可以通过将其添加到java文件中来使用这些库: import foo.bar.*; 这个“应用程序”现在可以导出到单个jar中 在没有eclipse的情况下,如何使用Maven实现这一点? 我切换到emacs…:) 使用命令: mvn archetype:g

在eclipse中,您可以轻松地将依赖项(即JAR文件)添加到您的项目中。 右键单击项目,然后单击->构建路径->添加库

现在,在项目“.classpath”中创建了一个隐藏文件。 该文件中添加了一个classpathEntry,因此现在我可以通过将其添加到java文件中来使用这些库:

import foo.bar.*;
这个“应用程序”现在可以导出到单个jar中

在没有eclipse的情况下,如何使用Maven实现这一点? 我切换到emacs…:)

使用命令:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-cli -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
我给自己准备了一个启动应用程序示例。 src文件夹中有一个App.java文件,在命令行上写着“helloworld”

通过pom.xml中的以下内容,我成功地在我的项目(maven独立部署)中获得了一个jar:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
      <execution>
        <id>copy</id>
        <phase>package</phase>
        <goals>
          <goal>copy</goal>
        </goals>
        <configuration>
          <artifactItems>
            <artifactItem>
                     <groupId>com.mycompany.third-party</groupId>
         <artifactId>commons-cli-archetype</artifactId>
         <version>1.0-SNAPSHOT</version>
         <type>jar</type>
         <overWrite>false</overWrite>
         <!--${project.basedir}     ${project.build.directory} -->
         <outputDirectory>${project.basedir}/resources/repo</outputDirectory>
         <destFileName>optional-new-name.jar</destFileName>
            </artifactItem>
          </artifactItems>
          <outputDirectory>${project.basedir}/resources/repo</outputDirectory>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </execution>
    </executions>
  </plugin>

manifest.MF仍然为空。

+1表示不使用eclipse;^)

如果您希望引用另一个JAR中的代码,请尝试将以下内容添加到POM中:

<dependencies>
    <dependency>
        <groupId>xxx</groupId>
        <artifactId>yyy</artifactId>
        <version>zzz</version>
    </dependency>
</dependencies>

xxx

还有一件事,您永远不应该使用.classpath文件。这是Eclipse特有的。更改它不会影响Maven,可能会混淆Eclipse,明白了吗! 我一直遵循本教程,直到第5步。

我没有执行步骤5,而是添加了:

   <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

现在它起作用了

所以谢谢你对暴风云的帮助! 发生了什么事?在我的.jar中仍然没有发现任何资源。 罐子被遮住了。 如果我想在没有maven的服务器上导出我的jar呢。那么,如何导出一个完整的工作罐呢


再次感谢

我不清楚你想要实现什么?你想造什么样的罐子?为什么你想在项目中有一个“罐子”?是的。在app.java文件中,我想导入我的jar。并使用它的类。就像使用eclips和向项目中添加库一样,使用Maven可以将JAR安装到本地存储库或将其部署到Nexus/Artifactory。然后在pom文件中引用它们。你不想这样做有什么原因吗?谢谢你的回答。我已经在maven上挣扎了好几天。我可以用什么来代替.classpath。我一直在尝试:。我的emacs没有代码完成。通过这个例子,我很高兴知道了如何使用App.java文件中的导入。但是,对于eclipse.classpath。如果没有它,我如何使用导入?我还有一个错误:“org.dstowall:onejarmaven-plugin:1.4.4或它的一个依赖项无法解析:”。任何人有没有一种简单的非eclipse方法可以做到这一点?是这样吗?joda time joda time${jodatime.version}现在我可以从joda time导入类了?资源在罐子里的什么地方!我试了很多次。我查错文件夹了DYou可以在我之前添加的链接中找到shade插件的XML描述
<dependencies>
    <dependency>
        <groupId>xxx</groupId>
        <artifactId>yyy</artifactId>
        <version>zzz</version>
    </dependency>
</dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.6</version>
    </dependency>
   <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
  mvn package
   java -jar target/dateutils.jar