在intellij运行配置中包括排除的jar

时间:2016-03-16 16:46:57

标签: java maven hadoop intellij-idea jar

我有一个可以部署到Amazon EMR的hadoop作业。因为EMR提供了hadoop-core jar,所以我已将pom中的依赖项配置为provided

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>0.20.2-cdh3u6</version>
        <scope>provided</scope>
    </dependency>

问题在于,当我想在intellij中调试jar时,它找不到这个jar中的一个类org.apache.hadoop.util.RunJar

在intellij中调试/运行jar时,是否可以将Intellij配置为在类路径中包含此jar,但是仍然要从输出jar中排除这个jar?

我本地计算机上实际jar的路径是/Users/jbrown/.m2/repository/org/apache/hadoop/hadoop-core/0.20.2-cdh3u6/hadoop-core-0.20.2-cdh3u6.jar - 我尝试将-cp /Users/jbrown/.m2/repository/org/apache/hadoop/hadoop-core/0.20.2-cdh3u6/hadoop-core-0.20.2-cdh3u6.jar添加到运行配置中的VM选项,但随后该作业根本无法运行。

1 个答案:

答案 0 :(得分:0)

假设您正在使用依赖示例中的maven,您可以使用多个maven配置文件来解决此问题。

您可以拥有包含public static Task WaitLoad(this WebBrowser webBrowser) { var tcs = new TaskCompletionSource<object>(); WebBrowserNavigatingEventHandler navigatingHandler = (sender, args) => timerInternalWait.Stop(); webBrowser.Navigating += navigatingHandler; WebBrowserDocumentCompletedEventHandler documentCompletedHandler = (sender, args) => tcs.SetResult(null); try { webBrowser.DocumentCompleted += documentCompletedHandler; await tcs.Task; } finally { webBrowser.DocumentCompleted -= documentCompletedHandler; await Task.Delay(1000); } return tcs.Task; } public static Task<bool> WaitLoad(this WebBrowser webBrowser, int timeout) { var webBrowserTask = webBrowser.WaitLoad(); return await Task.WhenAny(webBrowserTask, Task.Delay(timeout)) == webBrowserTask; } 部分的proddebug个人资料。对于所有与hadoop相关的依赖项,调试者可以跳过dependencies标记,其中包括最终JAR中的依赖项。

您可以阅读有关maven个人资料here的更多信息。