Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add compiled java class to a maven project

Tags:

maven-2

I received some compiled classes that I need to add to a project.

One solution I can think of is creating a jar with these files and manually uploading it to the repository. Obviously this will work. But I wonder if there is a more elegant solution. May be I can put them somehow under the project structure? So the files will be checked-in to the source control and it will easier to maintain their versions, etc.

like image 553
Tarlog Avatar asked Feb 07 '11 08:02

Tarlog


People also ask

Where do you find the class files when you compile a Maven project?

When it's finished, you should find the compiled . class files in the target/classes directory. The package goal will compile your Java code, run any tests, and finish by packaging the code up in a JAR file within the target directory.


2 Answers

Here's my approach as per the comments on Boris' answer (after finding myself needing to use the same yesterday, but unable to find the link to the answer I'd used):

In your project directory, create a folder called repo, which we'll use as a folder based Maven repository.

Add the following file repository to your project pom.xml:

<repositories>
    <repository>
        <id>file.repo</id>
        <url>file://${project.basedir}/repo</url>
    </repository>
</repositories>

Package your classes as a jar, and deploy them to the file repository, with the following command:

mvn deploy:deploy-file
-Durl=file:///absolute/path/to/your-project/repo \
-DrepositoryId=file.repo \
-Dfile=path-to-your.jar \
-DgroupId=some.external.project.group \
-DartifactId=the-artifact-name \
-Dversion=1.0 \
-Dpackaging=jar;

Following this you can just add a normal dependency on the jar in your project pom.xml, using the values for groupId, artifactId and version you passed above. You can then add the repo folder to SVN, and commit the changes to your pom.xml. Any developer checking out your project will now be able to use the same dependency without any effort.

like image 77
Tim Avatar answered Oct 31 '22 06:10

Tim


The first idea is way better then checking in binaries that you don't have control over. So, bundle binaries in a jar, version it and deploy it on the repository.

like image 29
Boris Pavlović Avatar answered Oct 31 '22 07:10

Boris Pavlović