Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Runnable JAR issues & use it in all Docker images #9505

Merged
merged 6 commits into from May 2, 2024

Conversation

tdonohue
Copy link
Member

@tdonohue tdonohue commented Apr 26, 2024

References

Description

This PR fixes the current bug with Embedded Tomcat not starting in our Runnable JAR and updates our Docker scripts to use the Runnable JAR by default (instead of using a Tomcat image).

Specific changes in this PR:

  1. Fix Embedded Tomcat not starting up #9476 bug with multiple Antlr versions which was causing Embedded Tomcat to fail. See 75a2ee2
  2. Update our Maven Assembly to ensure server-boot.jar is copied into [src]/dspace/target/dspace-installer/webapps alongside the "server" webapp. This make it easier to find & use. (Currently you must manually copy it from the src folders) See c89c626
  3. Update all Dockerfiles and docker-compose scripts to use the Runnable JAR instead of a Tomcat image. See 6a012c8

If anyone disagrees with one of these 3 commits, I can break this PR into smaller pieces. But, combined, these make it easier to find issues with the Runnable JAR if it's used in our Dockerfiles (as these Dockerfiles are also used in e2e tests on dspace-angular)

Instructions for Reviewers

  • Rebuild/Redeploy DSpace (mvn clean package; ant update) and verify the Runnable JAR is working. You can now run it from the DSpace installation folder, e.g.
java -jar [dspace]/webapps/server-boot.jar --dspace.dir=[dspace]
  • Optionally test the Docker scripts. However I've tested these locally thoroughly and they are working. They use the Runnable JAR in the same way as that command above.

NOTE TO SELF: Once this is merged, there will be minor updates necessary to the docker-compose scripts in dspace-angular!!

@tdonohue tdonohue added bug backend: Docker Related to DSpace deployment via Docker 1 APPROVAL pull request only requires a single approval to merge. labels Apr 26, 2024
@tdonohue tdonohue added this to the 8.0 milestone Apr 26, 2024
@tdonohue tdonohue added the testathon Reported by a tester during Community Testathon label Apr 29, 2024
vins01-4science added a commit to 4Science/DSpace that referenced this pull request May 2, 2024
@vins01-4science
Copy link
Contributor

vins01-4science commented May 2, 2024

Hello @tdonohue ,

thank you for these changes, Unfortunately I think we have other problems here ...
I tried to run the application using the command, that also you listed inside this ticket, and everything seems to work correctly.
But, If I try to run the application with my IDE (IntelliJ) using the previous configuration for DSpace 7.6+ I cannot get it to run.
After a deeper analysis I found out that the issue is inside this class: org.dspace.submit.service.SubmissionConfigServiceImpl
The constructor is threwing the exception in the startup phase (i.e. when Spring tries to init all our beans), but the message that I got on the log file is not explicity telling us what is the real problem here.

Startup Error

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.dspace.app.rest.converter.WorkflowItemConverter]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:221) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1311) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1689) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1653) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1543) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1511) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1392) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:767) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:508) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1419) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) ~[spring-beans-6.1.5.jar:6.1.5]
	... 19 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.dspace.submit.factory.SubmissionServiceFactory.getSubmissionConfigService()" because the return value of "org.dspace.submit.factory.SubmissionServiceFactory.getInstance()" is null
	at org.dspace.app.rest.converter.AInprogressItemConverter.(AInprogressItemConverter.java:63) ~[classes/:?]
	at org.dspace.app.rest.converter.WorkflowItemConverter.(WorkflowItemConverter.java:29) ~[classes/:?]
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:195) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1311) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1689) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1653) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1543) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1511) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1392) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:767) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:508) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1419) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) ~[spring-beans-6.1.5.jar:6.1.5]
	... 19 more

So I decided to catch the constructor exception, log it and use an Optional that will encapsulate the SubmissionConfigReader instance (to avoid null problems), and now I get this error message

SubmissionConfigReader Exception

2024-05-02 15:13:10,578 ERROR unknown unknown org.dspace.submit.service.SubmissionConfigServiceImpl @ Cannot initialize SubmissionConfigReader!
org.dspace.app.util.SubmissionConfigReaderException: Cannot perform a discovery search for Item Submission Configuration
	at org.dspace.app.util.SubmissionConfigReader.buildInputs(SubmissionConfigReader.java:177) ~[classes/:?]
	at org.dspace.app.util.SubmissionConfigReader.(SubmissionConfigReader.java:134) ~[classes/:?]
	at org.dspace.submit.service.SubmissionConfigServiceImpl.initSubmissionConfigReader(SubmissionConfigServiceImpl.java:48) ~[classes/:?]
	at org.dspace.submit.service.SubmissionConfigServiceImpl.(SubmissionConfigServiceImpl.java:36) ~[classes/:?]
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:195) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1311) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:225) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1323) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1284) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:486) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:341) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:334) [spring-beans-6.1.5.jar:6.1.5]
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1252) [spring-context-6.1.5.jar:6.1.5]
	at org.dspace.servicemanager.DSpaceServiceManager.startup(DSpaceServiceManager.java:276) [classes/:?]
	at org.dspace.servicemanager.DSpaceKernelImpl.start(DSpaceKernelImpl.java:159) [classes/:?]
	at org.dspace.app.rest.utils.DSpaceKernelInitializer.initialize(DSpaceKernelInitializer.java:49) [classes/:?]
	at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:627) [spring-boot-3.2.4.jar:3.2.4]
	at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:400) [spring-boot-3.2.4.jar:3.2.4]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) [spring-boot-3.2.4.jar:3.2.4]
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) [spring-boot-3.2.4.jar:3.2.4]
	at org.dspace.app.ServerBootApplication.main(ServerBootApplication.java:30) [classes/:?]
Caused by: org.dspace.discovery.SearchServiceException: Cannot invoke "Object.getClass()" because "value" is null
	at org.dspace.discovery.SolrServiceImpl.search(SolrServiceImpl.java:774) ~[classes/:?]
	at org.dspace.content.CollectionServiceImpl.findAllCollectionsByEntityType(CollectionServiceImpl.java:1122) ~[classes/:?]
	at org.dspace.app.util.SubmissionConfigReader.processMap(SubmissionConfigReader.java:441) ~[classes/:?]
	at org.dspace.app.util.SubmissionConfigReader.doNodes(SubmissionConfigReader.java:378) ~[classes/:?]
	at org.dspace.app.util.SubmissionConfigReader.buildInputs(SubmissionConfigReader.java:172) ~[classes/:?]
	... 32 more

So the server now can startup also with the Intellij Configuration, however I would like to have a better understanding of this behavior to correctly fix this error.
This change has been pushed here: fixes_for_runnable_jar_intellij

@abollini
Copy link
Member

abollini commented May 2, 2024

I guess that many of us are crossing a couple of bugs that are affecting each other :)
I have made similar changes trying to double check my #9477

Trying to run the spring boot application in eclipse I hit this issue that was almost solved adjusting the antlr version (I have replicated the exclusion policy found in dspace-spring-webapp so that the "old" 4.5.1 version is preferred in my case). Once I solved that, I hit an issue similar to the one pointed out by @vins01-4science , I solved that commenting out this block https://github.com/DSpace/DSpace/blob/main/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfigReader.java#L439-L445 that indeed reflect a bad design causing the issue solved here #9487

My goal is to make a test of #9487 if everything is ok we should merge it, once that I suspect that this PR should work also in eclipse or intellij

@tdonohue
Copy link
Member Author

tdonohue commented May 2, 2024

@vins01-4science and @abollini : After merging #9478 a moment ago, I've rebased this PR to include the changes of that one. Could you retest this PR now to see if it works for you from your IDE?

Copy link
Member

@abollini abollini left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going to make a test tomorrow in the meantime I would like to anticipate some quick feedback

pom.xml Outdated Show resolved Hide resolved
@abollini
Copy link
Member

abollini commented May 2, 2024

Hi @tdonohue found some extra time :)
I have tested and it works fine from the command line.
Adding the commit 2fd8680 to make eclipse happy from my other PR allows me to run dspace in eclipse both as spring boot application than within the eclipse tomcat.
I have created a PR for my suggestion about the assembly.xml see tdonohue#14

Use mvn assembly to remove the version number from the server-boot.jar in the installation folder
@tdonohue
Copy link
Member Author

tdonohue commented May 2, 2024

Merging as this has 1 Approval and is at +1. If we find later improvements are necessary, I can follow it up with an additional PR.

@tdonohue tdonohue merged commit a0b59b7 into DSpace:main May 2, 2024
22 checks passed
@tdonohue tdonohue deleted the fixes_for_runnable_jar branch May 2, 2024 19:43
@tdonohue
Copy link
Member Author

tdonohue commented May 2, 2024

I've updated the Install Docs at https://wiki.lyrasis.org/display/DSDOC8x/Installing+DSpace to note that the Runnable JAR is now located at [dspace]/webappse/server-boot.jar after building/deploying DSpace.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1 APPROVAL pull request only requires a single approval to merge. backend: Docker Related to DSpace deployment via Docker bug high priority testathon Reported by a tester during Community Testathon
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

Embedded Tomcat not starting up
3 participants