如何引用pom项目外部代码的相对路径?

iibxawm4  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(343)

我有完全不同的情况要处理。从未见过的东西。
我有一个代码库,它不是一个基于maven的项目。它基本上是一套 Pig 在上执行的脚本 Hadoop 集群。
现在需要使用 PigUnit ,所以我创建了一个基于maven的项目,其中包含项目所需的所有依赖项。
从视觉上看

user_mapper/
           src/main/
                   user.pig
                   other.pig
           test/
               pom.xml
               src/java/
                      /UserTest.java
                      /OtherTest.java

如你所见, test 它本身就是一个基于maven的项目。
我需要什么
UserTest.java 我想参考 user.pig 如何在中提供相对路径 UserTest.java ?

wxclj1h5

wxclj1h51#

我通过使用 java.io.File 作为

final String filePath = new File("../src/user.pig").getAbsolutePath();
eh57zj3b

eh57zj3b2#

尝试以下代码(内部使用commons io jar)

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;

public class FileReader {

Logger logger = Logger.getLogger(FileReader.class.getName());

static String webAppPath;

private static final boolean IS_WINDOWS = System.getProperty( "os.name" ).contains( "indow" );

private InputStream inputStream;
private static FileReader fileReader;

public String getAbsolutePath(Class appClass, String relativePath) {
    try {
        String parentPath = "";
        if (StringUtils.isNotBlank(webAppPath)) {
            parentPath = webAppPath;
        } else {
            parentPath = appClass.getProtectionDomain().getCodeSource().getLocation().getPath();
        }

        String osAppropriatePath = IS_WINDOWS ? parentPath.substring(1) : parentPath;

        String absolutePath = osAppropriatePath + relativePath;
        File file = new File(absolutePath);
        if (!file.exists()) {
            FileUtils.writeStringToFile(file, IOUtils.toString(readFile(relativePath), "UTF-8"));
        }
        return absolutePath;
    } catch (IOException ioe) {
        logger.log(Level.SEVERE, null, ioe);
        return relativePath;
    }
}

public void closeFileReader() {

    synchronized (this) {
        try {
            inputStream.close();
        } catch (IOException ex) {
            Logger.getLogger(FileReader.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}

private FileReader() {

}

public static FileReader getInstance() {

    return new FileReader();

}

public static String getWebAppPath() {
    return webAppPath;
}

public static void setWebAppPath(String webAppPath) {
    FileReader.webAppPath = webAppPath;
}

}

并调用该类以获取相对路径,如下所示

FileReader.getInstance().getAbsolutePath(user.pig, "user.pig");

相关问题