SummerCode
SummerCode

Reputation: 1403

Import and use a Maven managed Java library (CitySDK)

I am trying to build a web application based on the project library CitySDK, but i don't know how to import it properly into my own project.

I have created a Maven Web Application and added the CitySDK library as a Dependency, and then Selected the Project, right-clicked and Selected Build with Dependencies. No errors appeared, and in the image below you can see it appeared as a dependency.

However, whenever i try to use some of the classes specific to it, in my own Web Application(called TourismApplication's TestClass.java), the compiler displays an error, that the package is unknown. Could anyone suggest ideas as to what i have missed? I have followed a few Maven tutorials, but without any effects.

enter image description here

The dependencies are as follows:

enter image description here

Upvotes: 0

Views: 98

Answers (1)

Ryan J
Ryan J

Reputation: 8323

Ok I did some digging and I think I figured out your problem. Their POM file is incorrect based on the structure of project.

First off, I'll paraphrase what I think the steps you took to get it built in your project were, to ensure I followed the same steps to get it working. These are the steps I took:

  1. Cloned/downloaded the sources from the link you placed in the OP
  2. Built the project into a jar file by running the command they said to use: mvn clean package assembly:single
  3. Installed the artifact in your local Maven repo using mvn install
  4. Added a dependency in your project POM

I tried the same thing you did, using the library in a test source file, to no avail. I looked at the .jar file that was built using their instructions and didn't find any .class files archived into it... it was essentially empty.

Turns out, their src folder structure follows Maven standards, but their POM file indicates the sources are down a different chain of directories. If you examine the build log closely, you see "[INFO] No sources to compile"

The POM.xml file they provide specifies the source directory as

<sourceDirectory>src/citysdk/tourism/client</sourceDirectory>

However, the actual files are at

src\main\java\citysdk\tourism\client

After changing the line in the POM file from the above to (similarly for tests):

<sourceDirectory>src/main/java/citysdk/tourism/client</sourceDirectory>
<testSourceDirectory>src/test/java/citysdk/tourism/client/tests</testSourceDirectory>

rebuilt, and installed, it worked when I tried to use it in my project. Hope this helps.

FYI, I used IntelliJ as my IDE, but it should work the same with Eclipse.

Upvotes: 1

Related Questions