将文件传递到jar中

eiee3dmh  于 2021-06-13  发布在  Cassandra
关注(0)|答案(2)|浏览(433)

我有一个包含此代码的jar文件

import java.io.File
import java.nio.file.Paths

import org.cassandraunit.utils.EmbeddedCassandraServerHelper

object CassandraMockBootable extends App {
  println("Running embedded Cassandra.........")
  val file = Paths.get("/target/classes/cassandra.yaml").toFile
  assert(file.exists())
  EmbeddedCassandraServerHelper.startEmbeddedCassandra(file, 50000)
}

这个jar由运行java进程的maven插件在另一个应用程序中使用

<plugin>
        <groupId>com.bazaarvoice.maven.plugins</groupId>
        <artifactId>process-exec-maven-plugin</artifactId>
        <version>0.8</version>
        <executions>
          <execution>
            <id>Embedded-Cassandra</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>start</goal>
            </goals>
            <configuration>
              <name>Embedded-Cassandra</name>
              <skip>${skipStartService}</skip>
              <arguments>
                <argument>java</argument>
                <argument>-XX:+HeapDumpOnOutOfMemoryError</argument>
                <argument>-Xss1M</argument>
                <argument>-XX:+UseParallelGC</argument>
                <argument>-cp</argument>
                <argument>../../mock-service/target/lib/*</argument>
                <argument>mocks.bootables.CassandraMockBootable</argument>
              </arguments>
            </configuration>
          </execution>
    </executions>
</plugin>

我不知道该怎么做,但我一直无法通过考试 cassandra.yaml 而Assert永远不起作用。
我尝试将该文件放入src的资源中,并在生成的jar项目和consumer项目中进行测试,但什么都没有。Assert总是失败的。
知道我做错什么了吗?
当做

k4ymrczo

k4ymrczo1#

创建一个资源文件夹并将yaml文件放在其中,不要放在目标文件夹路径中,因为每次生成时目标文件夹总是被刷新,这使得文件不可用。
因此,请创建单独的资源文件夹并保留yaml文件,然后尝试访问

pdkcd3nj

pdkcd3nj2#

您似乎正在使用相对路径。删除第一个斜杠:

val file = Paths.get("target/classes/cassandra.yaml").toFile

或者,添加一个点:

val file = Paths.get("./target/classes/cassandra.yaml").toFile

或者提供完整路径

val file = Paths.get("/full/path/target/classes/cassandra.yaml").toFile

相关问题