【问题标题】:Adding a non-jar dependency to my maven project向我的 Maven 项目添加非 jar 依赖项
【发布时间】:2013-06-02 08:18:54
【问题描述】:

我想将一个 XML 文件添加到我的项目的依赖项中。我在这方面做得非常成功,但不幸的是,我发现我的 XML 文件没有添加到类路径中(这很有意义,因为它不是 jar 文件)。

我想在我的类路径中包含 XML 文件的原因是我可以将它作为资源加载。

如果推荐的话,推荐的方法是什么?

谢谢

【问题讨论】:

    标签: java maven dependencies


    【解决方案1】:

    这个解决方案对我有用。我正在使用 Nexus 存储库中的 WMQ 表通道文件。

            <dependency>
                <groupId>wmq</groupId>
                <artifactId>wmq-channel-tab-file</artifactId>
                <version>1.0.0</version>
                <type>tab</type>
            </dependency>
    
    ... 
    
    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                    <executions>
                        <execution>
                            <id>copy</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy</goal>
                            </goals>
                            <configuration>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>wmq</groupId>
                                        <artifactId>wmq-channel-tab-file</artifactId>
                                        <version>1.0.0</version>
                                        <type>tab</type>
                                        <overWrite>true</overWrite>
                                        <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/classes</outputDirectory>
                                        <destFileName>wmq-channel-tab-file.tab</destFileName>
                                    </artifactItem>
                                </artifactItems>
                                <!-- other configurations here -->
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    

    【讨论】:

      【解决方案2】:

      是的,放在资源文件夹中。默认为src\main\resources。如果您将文件放在那里,它将在您的类路径中可用。

      或者,您可以修改您的 pom 以说明 xml 文件所在的文件夹是资源文件夹。但是,我认为这是一种不好的做法如果您的 xml 文件位于您的 src\main\java 目录下。

      【讨论】:

      • 我不希望 XML 出现在我的 jar 文件中。它必须直接部署在文件系统上,以便我可以将它与外部库一起使用。
      • @user2444735 为什么?它是否总是在同一个位置同名?甚至在其他人的计算机上?
      • XML 文件是我正在使用的某个库的配置文件。我只能指定 XML 在文件系统上的位置以供库使用。我希望我可以通过将它定位为资源并在文件系统上获取它的位置来做到这一点。我不能使用固定路径,因为它会根据我正在处理的环境位于不同的位置。
      【解决方案3】:

      你需要把文件放在 src/main/resources.之后,该文件在类路径中可用。然后可以阅读:

          // Foo.class
          // assuming xml file is foo.xml
          InputStream is = Foo.class.getResourceAsStream("foo.xml"); 
      

      【讨论】:

        【解决方案4】:

        正如您在 pom.xml 中提到的那样,Maven 使用您项目的资源文件夹。这是 pom 的示例。作为资源添加的任何内容都将在您的类路径中可用,并且可以在您的代码中访问。

          <build>
            <finalName>Examples</finalName>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                </resource>
                <resource>
                    <directory>src/main/config</directory>
                </resource>
            </resources>
        </build>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-07
          • 2020-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-08
          • 2019-09-03
          • 1970-01-01
          相关资源
          最近更新 更多