Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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_Minecraft - Fatal编程技术网

Java 如何在Maven中使用自定义库?

Java 如何在Maven中使用自定义库?,java,maven,minecraft,Java,Maven,Minecraft,我正在开发一个使用Maven的软件。我的朋友最近和我一起工作,他添加了一个IO库,使处理Minecaft:Pocket Edition发送的数据包变得更容易,但是,由于jar不在Maven Repo上,我可以用正常的方式使用依赖关系。是否仍然可以使用maven repo中没有的自定义库 My pom.xml: <project> <?xml version="1.0" encoding="UTF-8"?> <groupId>net.trent

我正在开发一个使用Maven的软件。我的朋友最近和我一起工作,他添加了一个IO库,使处理Minecaft:Pocket Edition发送的数据包变得更容易,但是,由于jar不在Maven Repo上,我可以用正常的方式使用依赖关系。是否仍然可以使用maven repo中没有的自定义库

My pom.xml:

<project>
    <?xml version="1.0" encoding="UTF-8"?>

    <groupId>net.trenterprises.diamondcore</groupId>
    <artifactId>DiamondCore</artifactId>
    <version>0.1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.0-rc1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.0-rc1</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.11</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-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>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>net.trenterprises.diamondcore.run</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <organization>
        <name>Trenterprises</name>
    </organization>
</project>

您可能需要添加系统范围的依赖项。请看这里:


它解释了导入依赖项的各种方法。并非所有依赖项都需要保存在存储库中。

您可能需要添加系统范围的依赖项。请看这里:


它解释了导入依赖项的各种方法。并非所有的依赖项都需要保存在存储库中。

如果自定义jar文件不在maven central中,那么最好将其保存在不同的repo中。如果是这种情况,您可以向pom.xml文件添加额外的存储库详细信息,它将从两个repo中提取

第二个最好的方法是使用mvn install:install file目标将二进制文件手动安装到缓存中。然后它将在缓存支持的环境中解析。如果你有一个构建系统,它生活在你的工作环境之外,它会变得更难

假设您必须在多个maven环境中工作,而不仅仅是您自己的环境,并且您没有私有存储库,那么您需要创建一个。您可以下载各种maven存储库管理系统Artifactory等。安装它们,然后按照添加第二个外部存储库的方式配置内部存储库


如果设置存储库服务器对您来说是一件令人望而生畏的事情,尽管它远不是一个完美的解决方案,那么您可以使用mvn install:install file target在每个本地缓存中安装文件,但如果清除一个输入错误或缓存,那么如果自定义jar文件不在maven central中,它将在该缓存中被弄乱,其次,最好的办法是采用不同的回购协议。如果是这种情况,您可以向pom.xml文件添加额外的存储库详细信息,它将从两个repo中提取

第二个最好的方法是使用mvn install:install file目标将二进制文件手动安装到缓存中。然后它将在缓存支持的环境中解析。如果你有一个构建系统,它生活在你的工作环境之外,它会变得更难

假设您必须在多个maven环境中工作,而不仅仅是您自己的环境,并且您没有私有存储库,那么您需要创建一个。您可以下载各种maven存储库管理系统Artifactory等。安装它们,然后按照添加第二个外部存储库的方式配置内部存储库


如果设置存储库服务器对您来说是一件令人望而生畏的事情,尽管它远不是一个完美的解决方案,那么您可以使用mvn install:install file target在每个本地缓存中安装该文件,但如果清除一个输入错误或缓存,那么该缓存中的文件就会乱七八糟

我想这就是拉萨德所说的,但要详细说明一下:我过去曾使用system和一些/path/to.jar成功地将Maven指向本地jar。例如:

<dependency>
  <groupId>org.apache</groupId>
  <artifactId>kafka_2.8.2</artifactId>
  <version>${kafka.version}</version>
  <type>jar</type>
  <scope>system</scope>
  <systemPath>${basedir}/lib/kafka_2.8.2-${kafka.version}.jar</systemPath>
</dependency>

我想这就是拉萨德所说的,但要详细说明一下:我过去曾使用system和一些/path/to.jar成功地将Maven指向本地jar。例如:

<dependency>
  <groupId>org.apache</groupId>
  <artifactId>kafka_2.8.2</artifactId>
  <version>${kafka.version}</version>
  <type>jar</type>
  <scope>system</scope>
  <systemPath>${basedir}/lib/kafka_2.8.2-${kafka.version}.jar</systemPath>
</dependency>

非常感谢你!我终于可以将项目导出到一个jar中,并在eclispe之外进行测试了!非常感谢你!我终于可以将项目导出到一个jar中,并在eclispe之外进行测试了!去思考吧。特别是如果您以后希望依赖关系存在于某个中央存储库中。谢谢您的建议!我以前看过类似的东西,但我真的不喜欢@我爸爸的答案就是我一直在寻找的答案。但是谢谢你的帮助!系统范围主要是说您没有使用maven。如果您想自己管理这个JAR文件的分发,那么使用maven分发90%的项目而不是最后一个JAR文件似乎有些奇怪。就不喜欢它而言,您意识到您可以只运行一个命令,而让maven不专门处理这个问题?将指导您如何在本地存储库缓存中手动安装文件。特别是如果您以后希望依赖关系存在于某个中央存储库中。谢谢您的建议!我以前看过类似的东西,但我真的不喜欢@我爸爸的答案就是我一直在寻找的答案。但是谢谢你的帮助!系统范围主要是说您没有使用maven。如果您想自己管理这个JAR文件的分发,那么使用maven分发90%的项目而不是最后一个JAR文件似乎有些奇怪。就不喜欢它而言,您意识到您可以只运行一个命令,而让maven不专门处理这个问题?将指导您如何手动 在本地存储库缓存中安装文件。