diff --git a/.gitignore b/.gitignore index 2a55fcd..3e634ca 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,7 @@ gradle/ gradlew* .gradle .idea +.vs out -build \ No newline at end of file +build +*target/ diff --git a/.travis.yml b/.travis.yml index c44d29f..03c5836 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: scala script: - - gradle test + - sbt test jdk: - openjdk11 diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 64dfbc2..0000000 --- a/build.gradle +++ /dev/null @@ -1,56 +0,0 @@ -group 'illesguy' -version '1.0' - -buildscript { - repositories { - mavenCentral() - } -} - -apply plugin: 'scala' -apply plugin: 'idea' -apply plugin: 'application' - -sourceCompatibility = 1.11 -libsDirName = 'lib' -project.ext.scalaVersion = '2.13.1' - -repositories { - mavenCentral() -} - -sourceSets { - main { - scala.srcDirs = ['src/main/scala'] - resources.srcDirs = ['src/main/resources'] - } - test { - scala.srcDirs = ['src/test/scala'] - resources.srcDirs = ['src/test/resources'] - } -} - -startScripts { - outputDir = file('build/bin') - applicationName = 'WebCrawler' - mainClassName = 'com.illesguy.webcrawler.main.Main' -} - -task copyToLib(type: Copy) { - into "$buildDir/lib" - from configurations.runtime -} - -dependencies { - compile group: 'org.scala-lang', name: 'scala-library', version: project.ext.scalaVersion - compile group: 'org.scala-lang', name: 'scala-reflect', version: project.ext.scalaVersion - compile group: 'org.scala-lang', name: 'scala-compiler', version: project.ext.scalaVersion - compile group: 'org.jsoup', name: 'jsoup', version: '1.11.3' - compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.6.1' - - testCompile group: 'junit', name: 'junit', version: '4.12' - testCompile group: 'org.mockito', name: 'mockito-all', version: '1.8.4' - testCompile group: 'org.scalatest', name: 'scalatest_2.13', version: '3.0.8' -} - -test.finalizedBy copyToLib diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..17182e0 --- /dev/null +++ b/build.sbt @@ -0,0 +1,28 @@ +organization := "com.illesguy" + +name := "WebCrawler" + +version := "1.0" + +scalaVersion := "2.13.1" + +resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" + +libraryDependencies ++= Seq( + "org.jsoup" % "jsoup" % "1.11.3", + "org.slf4j" % "slf4j-simple" % "1.6.1", + "junit" % "junit" % "4.12", + "org.mockito" % "mockito-all" % "1.8.4", + "org.scalatest" %% "scalatest" % "3.0.8" +) + +enablePlugins(UniversalPlugin) + +val qualityCheck = taskKey[Unit]("Run tests and checks on project") + +val build = taskKey[Unit]("Build project") +build := Def.sequential( + clean in Compile, + compile in Compile, + test in Test +).value diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..72f9028 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.2.7 diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 0000000..f63d773 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.4.1") \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index c05dcbf..0000000 --- a/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -rootProject.name = 'WebCrawler' - diff --git a/src/test/scala/com/illesguy/webcrawler/crawler/CrawlerTest.scala b/src/test/scala/com/illesguy/webcrawler/crawler/CrawlerTest.scala index 03d8c67..a1836cf 100644 --- a/src/test/scala/com/illesguy/webcrawler/crawler/CrawlerTest.scala +++ b/src/test/scala/com/illesguy/webcrawler/crawler/CrawlerTest.scala @@ -3,19 +3,15 @@ package com.illesguy.webcrawler.crawler import java.util.concurrent.Executors import com.illesguy.webcrawler.processor.PageProcessor -import org.jsoup.HttpStatusException -import org.junit.runner.RunWith import org.mockito.Matchers.{eq => eqTo, _} import org.mockito.Mockito import org.scalatest.{FlatSpec, Matchers} -import org.scalatestplus.junit.JUnitRunner import org.scalatestplus.mockito.MockitoSugar import scala.concurrent.duration.Duration import scala.concurrent.{Await, ExecutionContext} -import scala.util.{Failure, Success, Try} +import scala.util.{Failure, Try} -@RunWith(classOf[JUnitRunner]) class CrawlerTest extends FlatSpec with Matchers with MockitoSugar { val mockProcessor = mock[PageProcessor] diff --git a/src/test/scala/com/illesguy/webcrawler/errorhandler/IgnoringErrorHandlerTest.scala b/src/test/scala/com/illesguy/webcrawler/errorhandler/IgnoringErrorHandlerTest.scala index 9395fbd..dce4784 100644 --- a/src/test/scala/com/illesguy/webcrawler/errorhandler/IgnoringErrorHandlerTest.scala +++ b/src/test/scala/com/illesguy/webcrawler/errorhandler/IgnoringErrorHandlerTest.scala @@ -1,14 +1,11 @@ package com.illesguy.webcrawler.errorhandler import org.jsoup.{HttpStatusException, UnsupportedMimeTypeException} -import org.junit.runner.RunWith import org.scalatest.{FlatSpec, Matchers} -import org.scalatestplus.junit.JUnitRunner import org.scalatestplus.mockito.MockitoSugar import scala.util.{Failure, Try} -@RunWith(classOf[JUnitRunner]) class IgnoringErrorHandlerTest extends FlatSpec with Matchers with MockitoSugar { "IgnoringErrorHandler" should "return empty list for http status error" in { diff --git a/src/test/scala/com/illesguy/webcrawler/parser/SubDomainUrlParserTest.scala b/src/test/scala/com/illesguy/webcrawler/parser/SubDomainUrlParserTest.scala index 966d345..465edcc 100644 --- a/src/test/scala/com/illesguy/webcrawler/parser/SubDomainUrlParserTest.scala +++ b/src/test/scala/com/illesguy/webcrawler/parser/SubDomainUrlParserTest.scala @@ -1,12 +1,9 @@ package com.illesguy.webcrawler.parser import org.jsoup.Jsoup -import org.junit.runner.RunWith import org.scalatest.{FlatSpec, Matchers} -import org.scalatestplus.junit.JUnitRunner import org.scalatestplus.mockito.MockitoSugar -@RunWith(classOf[JUnitRunner]) class SubDomainUrlParserTest extends FlatSpec with Matchers with MockitoSugar { val urlParser = SubDomainUrlParser diff --git a/src/test/scala/com/illesguy/webcrawler/processor/JsoupPageProcessorTest.scala b/src/test/scala/com/illesguy/webcrawler/processor/JsoupPageProcessorTest.scala index 41c0a64..c6308a8 100644 --- a/src/test/scala/com/illesguy/webcrawler/processor/JsoupPageProcessorTest.scala +++ b/src/test/scala/com/illesguy/webcrawler/processor/JsoupPageProcessorTest.scala @@ -6,17 +6,14 @@ import com.illesguy.webcrawler.errorhandler.ErrorHandler import com.illesguy.webcrawler.parser.UrlParser import org.jsoup.HttpStatusException import org.jsoup.nodes.Document -import org.junit.runner.RunWith import org.mockito.Matchers.{any, anyString} import org.mockito.Mockito import org.mockito.invocation.InvocationOnMock import org.scalatest.{FlatSpec, Matchers} -import org.scalatestplus.junit.JUnitRunner import org.scalatestplus.mockito.MockitoSugar import scala.util.{Failure, Success, Try} -@RunWith(classOf[JUnitRunner]) class JsoupPageProcessorTest extends FlatSpec with Matchers with MockitoSugar { val mockUrlParser = mock[UrlParser]