Maven BUILD FAILURE при установке Mahout на Ubuntu

Я пытаюсь создать mahout в Ubuntu 12.04, но на виртуальной машине, запущенной на хост-машине Windows 7. Кажется, Maven это не нравится, и я действительно не понимаю, как исправить эту проблему. Это результат хорошего длительного тестирования сборки:

Результаты :

Неудачные тесты:

SearchSanityTest.testRemoval:166->Assert.assertEquals:494->Assert.failNotEquals:743->Assert.fail:88 Previous second neighbor should be first expected: but was: Tests run: 834, Failures: 1, Errors: 0, Skipped: 0 [INFO] Reactor Summary: [INFO] [INFO] Apache Mahout ..................................... SUCCESS [3.106s] [INFO] Mahout Build Tools ................................ SUCCESS [2.997s] [INFO] Mahout Math ....................................... SUCCESS [4:59.221s] [INFO] Mahout Core ....................................... FAILURE [48:17.299s] [INFO] Mahout Integration ................................ SKIPPED [INFO] Mahout Examples ................................... SKIPPED [INFO] Mahout Release Package ............................ SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE 

Какие-нибудь идеи? Есть ли что-нибудь, что я могу сделать по этому поводу?

У меня установлен hasoop, я считаю, что я настроил это правильно, настроив SSH и запустив / остановив namenode, чтобы убедиться, что он сработал. У меня JDK1.7.0_25

Обновить:

ну, я просто попытался построить его с помощью «sudo», и он получил немного дальше, но все же провалился.

Результаты :

 Failed tests: SequenceFilesFromMailArchivesTest.testSequential:106->Assert.assertEquals:144->Assert.assertEquals:115 expected: but was:  Tests run: 106, Failures: 1, Errors: 0, Skipped: 0 

Я чувствую, что должен делать что-то неправильно, потому что многие люди должны каждый день устанавливать mahout через maven. Есть идеи? Или еще просто // закомментируйте те тесты, которые терпят неудачу?

если вы просто хотите создать файлы mahout jar, тогда вы можете пропустить тест. попробуйте эту команду:

sudo mvn -DskipTests install -e

эта работа для меня 🙂

Вы строите источник, и есть один тест, который терпит неудачу.

Вы можете либо исправить сломанный тест самостоятельно, либо надеяться, что он будет исправлен в ближайшее время (обновление от SVN раз в то время).

Если вы не можете ждать, и вы уверены, что все будет работать «более или менее» на вашем пути, вы можете просто удалить сломанный тест, чтобы вы могли построить … Возможно, некоторые побочные эффекты подход…

Я столкнулся с этой проблемой только сейчас. Я обнаружил, что вы можете изменить метод SequenceFilesFromMailArchivesTest.testSequential следующим образом, чтобы решить проблему:

 @Test public void testSequential() throws Exception { File outputDir = this.getTestTempDir("mail-archives-out"); String[] args = { "--input", inputDir.getAbsolutePath(), "--output", outputDir.getAbsolutePath(), "--charset", "UTF-8", "--keyPrefix", "TEST", "--method", "sequential", "--body", "--subject", "--separator", "" }; // run the application's main method SequenceFilesFromMailArchives.main(args); // app should create a single SequenceFile named "chunk-0" in the output dir File expectedChunkFile = new File(outputDir, "chunk-0"); String expectedChunkPath = expectedChunkFile.getAbsolutePath(); Assert.assertTrue("Expected chunk file " + expectedChunkPath + " not found!", expectedChunkFile.isFile()); Configuration conf = new Configuration(); SequenceFileIterator iterator = new SequenceFileIterator(new Path(expectedChunkPath), true, conf); Assert.assertTrue("First key/value pair not found!", iterator.hasNext()); Pair record ;//= iterator.next(); /* File parentFile = new File(new File(new File("TEST"), "subdir"), "mail-messages.gz"); Assert.assertEquals(new File(parentFile, testVars[0][0]).toString(), record.getFirst().toString()); Assert.assertEquals(testVars[0][1] + testVars[0][2], record.getSecond().toString()); Assert.assertTrue("Second key/value pair not found!", iterator.hasNext()); record = iterator.next(); Assert.assertEquals(new File(parentFile, testVars[1][0]).toString(), record.getFirst().toString()); Assert.assertEquals(testVars[1][1] + testVars[1][2], record.getSecond().toString()); */ record = iterator.next(); File parentFileSubSubDir = new File(new File(new File(new File("TEST"), "subdir"), "subsubdir"), "mail-messages-2.gz"); Assert.assertEquals(new File(parentFileSubSubDir, testVars[0][0]).toString(), record.getFirst().toString()); Assert.assertEquals(testVars[0][1] + testVars[0][2], record.getSecond().toString()); Assert.assertTrue("Second key/value pair not found!", iterator.hasNext()); record = iterator.next(); Assert.assertEquals(new File(parentFileSubSubDir, testVars[1][0]).toString(), record.getFirst().toString()); Assert.assertEquals(testVars[1][1] + testVars[1][2], record.getSecond().toString()); /////////Modified By ZhouShuang///////////// record = iterator.next(); File parentFile = new File(new File(new File("TEST"), "subdir"), "mail-messages.gz"); Assert.assertEquals(new File(parentFile, testVars[0][0]).toString(), record.getFirst().toString()); Assert.assertEquals(testVars[0][1] + testVars[0][2], record.getSecond().toString()); Assert.assertTrue("Second key/value pair not found!", iterator.hasNext()); record = iterator.next(); Assert.assertEquals(new File(parentFile, testVars[1][0]).toString(), record.getFirst().toString()); Assert.assertEquals(testVars[1][1] + testVars[1][2], record.getSecond().toString()); //////////Modified By ZhouShuang//////////// Assert.assertFalse("Only two key/value pairs expected!", iterator.hasNext()); } 

Проблема возникла только потому, что файлы в файле [], возвращаемые listFiles (), сортируются случайным образом. Я проверил программу, чтобы проверить ее. Оказывается, следующая последовательность: / home / alain / mytests / subsubdir /home/alain/mytests/mail-messages.gz и в соответствии с методом accept () в classе PrefixAdditionFilter будет рекурсивно помещать файлы в dirctory в SequenceFile. Поэтому, когда мы используем iterator.next для получения значения ключа в SequenceFile, мы сначала получаем subsubdir / mail-messages-2.gz, а затем mail-messages.gz. Но в исходной функции testSequential () он сначала проверяет почту-сообщения.gz, а затем subsubdir / mail-messages-2.gz. Таким образом, порядок отменяется. Просто изменил порядок, и все будет в порядке. Предупреждение. Существуют два файла SequenceFilesFromMailArchivesTest.java, один из которых находится в дистрибутиве, а другой – в пакете интеграции. Мы должны изменить позже. Я сделал ошибку 🙂