daisy / pipeline-modules

Modules for the DAISY Pipeline project
4 stars 5 forks source link

Maven package produces error #87

Open twhite94301 opened 5 months ago

twhite94301 commented 5 months ago

When I clone the daisy/pipeline repository and then perform a "mvn package" I get the following error. I don't know how to fix this.

[1;36mDEBUGESC[m] ======================================================================= [1;33mWARNINGESC[m] The POM for com.sun.xml.bind:jaxb-extra-osgi:jar:2.2.11 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for com.sun.xml.bind:jaxb-extra-osgi:2.2.11 [ERROR] 'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} @

How do I find com.sun:tools:jav to create an absolute path?

bertfrees commented 5 months ago

Hum, perhaps this is an issue with later versions of Java. I recommend building with JDK 8 or 11. Those are the two version I use.

By the way, the daisy/pipeline repository is not intended to be built using mvn package. Depending on what exactly you want to do, this might not be the repository you are looking for. Can you explain what exactly is your goal? Then I can give more specific advice.

twhite94301 commented 5 months ago

Thanks I will check my Java version. What I am trying to do is build an interface to our Indic languages in order to add them to the languages that the Daisy/Pipeline supports. To do this I plan on writing a mock google interface to talks to our voice engine. But, first I simply want to build the existing pipeline code.

bertfrees commented 5 months ago

There is currently not really a way to build the complete Pipeline code. Pipeline consists of a large number of modules that are already compiled and available on Maven Central, and the "pipeline-assembly" project collects all these modules to create the final package. If you make a change, only those modules that were affected need to be recompiled, and the corresponding version numbers updated in the assembly project. There is some manual work involved in updating the version numbers, but that should be manageable if you plan on adding just one new module or making changes to one existing module.

twhite94301 commented 5 months ago

Boy Bert, I feel really dumb.I am simply trying to create a build environment so that I can create a MockGoogle interface that points to my Hear2Read TTS code.  To do this I need a bunch of include files from the Daisy Pipeline to that I can properly parse the xml that is sent to the interface and properly format messages back to the pipeline with the audio that the Hear2Read TTS code generates.I have been able to correctly build the pipeline-assembly code.  But, of course that is all object code and does not provide what I need.When I try to build the pipeline-modules code in order to get the proper include files to get populated, the build fails looking for the  org.daisy.pipeline.modules:common-utils:bundle:3.1.1-SNAPSHOT file.  I have no idea where to get the snapshot files since the make system does not seem to pull them down for me.I guess that my question is how to get these files?  Where are the archived?  Tim

bertfrees commented 5 months ago

Hi Tim. You shouldn't have to worry about where to get files that the code depends on. The dependencies should all be downloaded automatically. If things are properly set up. Your build problem seems to be that it fails to download dependencies from Maven central.

Perhaps this is because I always use make to build the project, never mvn directly. make makes sure the the correct Maven settings are used. To create these settings, I run:

make settings.xml

The Makefile was written to work on Linux and macOS systems. If you are on Windows, you might be out of luck and we might need to go another route.

I can then run the command eval $(make dump-maven-cmd), and then use mvn like I would normally use itn e.g. mvn -f modules install -DskipTests to build all the modules and install them into a local repository.