-
Notifications
You must be signed in to change notification settings - Fork 388
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
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
Questions about the development environment #692
Comments
@
@patric-r |
It's a pity that you seem to refuse to answer my simple question: What does it make sense forcing me starting 20 application types when you know the answer or when it is somewhere configured? I started 3, but I don't see any difference. We're planning contributing to this project, but we need your or the communities support and a perspective that this project is really alive again and to provide at least basic help/documentation of how to start developing. But compared to other open source projects, it seems to be much harder here... |
Sorry, I do not understand this question :( Are you trying to start BIRT Designer from sources? What I can see is 2 product manifests with "designer" in its id
and
So what we are talking about? |
I mean this one: Starting eclipse.exe shows me that what I call the "Report designer" (if you use other terms, it would be nice to learn them that we use the same terms). My question is: What do I have to do in order to start exactly this "application" from the BIRT development environment? |
To start "All in One" you need to select
if something is not working as expected please open the dedicated issue to focus on concrete scenario |
I am not going to spoon-feed you, my friend. We learn from frustration and bumping our noses. :) Good to see your frustration level rise ;)
There are only a couple of them in the org.eclipse.birt namespace. Also, you have to clean your configuration before you start a new application otherwise you will not see any difference. Before you ask me how to do that, take a good look at the launch configuration form. If an application does not run, you have to examine the messages. Most of the time there is a missing plugin or there are too many plugins. I will organize a teams session for Monday. We can do a Q&A there. Thank you for your testing efforts. Your tests were a driver for the recent developments. Try to stay positive. |
The eclipse.exe from birt-report-designer-all-in-one is the right one.
Now you are ready to design reports.
|
BTW in my start script for the BIRT IDE, I set some environment variables and then call
The logging.properties is only because I use java.util.logging from inside scripts in my reports. |
I filed an issue to make life a little bit better for consumers: #694 |
Thanks! The viewer is not working, I know this had been discussed recently - is the github issue #649 the right one for this (because I don't get any stacktrace, just a 404 in the browser when doing a PDF preview)? And BTW, I saw this in the error log: |
@wimjongman I have question regarding the last step, making the plugin configuration for the tests identical to the birt-run launch configuration: |
I finally (think that) I understand what you mean. |
Yes :) Sorry for the confusion. How do you test/debug your local working copy changes? |
I don't think there is a shortcut. The shortest way is maybe editing the file in a text editor. Launch configs are a moving target because of adding/removing future plugins. Launch configs can be different on different platforms. Therefore the developers should understand what makes them tick so that they can create/change them quickly. |
Especially because they are a moving target, it makes sense to commit them to the repo. |
I see your POV, I really do, but being a BIRT maintainer without having basic Eclipse knowledge is not realistic. Everything we put in the repo we also have to maintain. With a limited set of committers, it will be very hard to keep all of these things synchronized. e.g. see #693 I have started an Eclipse course recently that ppl might want to check out: https://www.youtube.com/playlist?list=PLj9czDtxM-7w6Oc_0lVip1O2Z95C6w1Sk |
The very hard way: I build the source with mvn, then extract the ZIP, start eclipse, set up a workspace, import the project, run a report. With older versions I also managed to debug from within Eclipse, but similar to you, I either forgot how to do this or it did no longer work in the same way as in 4.2.1. It's a bit like developing in the old mainframe days, because the MVN build takes 1/2 hour every time. Makes you think a bit more before changing something :-) |
It should be noted that, unfortunately, basic eclipse knowledge (and here I mean: including detailed knowledege about OSGI and plugins, products, features) is no longer something that can be assumed as "every Java developer knows this anyway". |
Lol, that is terrible.
Every framework requires time to learn. It is not hard once you get it ;) |
This isn't so much a question but rather an observation. If you enable freeze reporting (enabled by default in the committers package used by the Oomph setup), you will see many traces involving this:
The ~100,000 warnings are not helpful for performance. I think this is made worse by the fact that projects contain nested projects, e.g., /org.eclipse.birt-parent contains the entire tree and each of the branches is also a project duplicated in the explorer that also contains a tree of projects, also duplicated in the explorer. Because of this structure, doing a search will find matches in multiple copies of the same file. I think it would be good to use resource filters to hide the contents of subprojects, but that's a fair bit of work to set up and I want to be sure that there is agreement to do this before I spend time doing that. Here's what it looks like now: It could be made to look like this: with a filter like this in the .project file
Or it could be made to look like this: With a filter like this:
What do you folks think? |
Well, once you don't import them, then the pom.xmls become way less accessible. In combination with filtering and working sets one could provide access to all the things, like the pom.xmls, without duplicating the project/ folder/file structure. All the less interesting "technical parent" projects could of course be in a single working set where you can easily ignore it but also still easily access everything including and searching/editing all the poms... E.g, I was playing with that like this, where I still need to determine what to do with the "Other Projects" projects: I just don't want to do a bunch of work that in the end you guys don't actually want! |
We want that! Having the "group" folders for their content but hiding the actual embedded projects would be awesome. The embedded projects can go in a working set with the same name as the parent folder? https://user-images.githubusercontent.com/208716/140882114-38fb0a25-8521-4f8c-b90d-1da602073ced.png |
So, you idea is to move "technical parent" to a dedicated Working Set and then hide this Working Set? |
I think we have to remove all 'parent' projects from the workspace. Hiding them in the project explorer will not fool the rest of Eclipse. I just manually removed all the parents but after a restart, the setup task was adding them again. Also, it looks like the setup task is responsible for reloading the target platform which then leads to a complete recompile, which is unwanted after the first time. |
I fixed the reloading of the target platform already: That's only in a nightly build so far... But even with that, there is still rebuild upon startup and it's not clear what causes that. It happens even when to setup tasks are performed... As I have suggested the problem isn't parent projects themselves but rather the fact that they show/include the entire tree of nested projects in them which can be avoided with filters, which I have started to work on... |
I tried the eclipse installer and opened the workspace as Wim showed in the Q&A session. Eclipse shows 487 errors and ~100K warnings. I dont' understand why on my machine there are 487 errors, because I saw only 14 (?) on Wim's machine. BTW, Wim wanted to share the recorded Q&A session. |
Got it. I was confused about resource filters but I looked it up and now I'm good. I filed an issue for the resource filters: Add resource filters to parent projects #699 |
What is the recommend way / workflow to test own applications which use the BIRT runtimes againt the checked out working copy of BIRT without creating all BIRT jars by a full maven build and assigning those to the applications? E.g. by adding "Required Projects" (birt projects) to the build path for such applications. |
Assumptions:
Steps:
|
@ruspl-afed Afterwards, we start the platform, load the design handle and create the runAndRender task:
For each to-be-created PDF we do:
|
In our application we work similar to @patric-r. We are using the "birt-runtime" here (without OSGI). But instead of explicitly adding single JARs we just add ReportEngine/lib/* to the classpath. This includes all the files in that directory. This requires the Maven build of course. But to just test modifications of the BIRT source, we do not need to do it this way: |
@hvbtup You're completely right, we do it in a similar way that we can test everything in the BIRT designer (except that we don't use DB connections within BIRT, we decoupled the db model from the BIRT design model, so our process is roughly -> Export relevant data from DB to XML, start our application which invokes BIRT in the above way and the design uses the xml as a datasource). However, I know that there are performance issues and memory leaks in the BIRT engine (at least in the version we're using) which only appear when creating many PDFs within one ReportEngine. Is there a way to achieve this? |
Note that JDT's increment compiler automatically creates the |
Here's another trick to build a class path. Go to any of the JUnit tests and do Run as (or DebugAs) -> JUnit test. Then open the Debug perspective (upper right button with +), and you see the terminated process. Right click (context menu) the nested process object and use Properties... Here you can see the command line used to launch the test. This has the full class path of everything used by that test. |
We have created a video that explains the full cycle of contributing to BIRT. 00:00 Intro |
I don't know about BIRT specific memory leaks and performance issues.
In order to do load testing or performance testing, you should definitely use test scripts or programs with loops which start e.g. 1000 reports and wait until all 1000 are finished. |
We run all reports with -d64 -Xmx6200m -Xms512m (though only one huge report needs the 6GB), using birt (4.5 and 4.8) under wildfly on dedicated windows servers with multiple users. |
I was able to solve this. Now I only have one remaining error message:
in org.eclipse.birt.data.oda.pojo.ui/META-INF/MANIFEST.mf This seems to be a basic beginner's eclipse issue. I think it is worth mentioning. What I had to do:
I have to repeat this every time I start eclipse.exe, as it seems. Otherwise Eclipse finds and uses the JRE 11 in c:\prog\jdk... and that causes a lot of "Failed to init ct.sym" errors. For birt-runtime-test (inside BIRT Tests) and org.eclipse.birt.axis.overlay (inside BIRT Bundles) I had to explicitly choose JavaSE-11 in the build path. |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Please post all your questions about the development environment here.
The text was updated successfully, but these errors were encountered: